免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1067 | 回复: 7
打印 上一主题 下一主题

这个程序有点问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-17 12:25 |只看该作者 |倒序浏览
最终结果与预期结果不符

#include <string.h>
#include <stdlib.h>
#include <stdio.h>


void getline(char *str);

int main (int argc,char **argv)
{
        int len;
        char str[1024] = "hello world thank!!!";
        while(1)
        {
                len = 0;
                getline(str);
                printf("str = %s\n",str);
                if(strcmp(str,"exit") == 0)
                        break;
                else
                        printf("end....\n");
        }
        return 0;
}

void getline(char *str)
{
       
        char *temp = str;
                       char c;
        memset(str,'\0',sizeof(str));
        while ((c = getchar()) != '\n')
        {
                *(temp++) = c;
        }
}

好象是和字符串常量区域和栈区域有点关系
不清楚
当输入四个字母时“1234”,打印“1234”没什么情况
当输入超过四个字母时“123456”,就会出现“123456 world thank!!!” 的情况

[[i] 本帖最后由 banboo2004 于 2006-3-17 13:33 编辑 [/i]]

论坛徽章:
0
2 [报告]
发表于 2006-03-17 13:14 |只看该作者
你的本来意思是什么啊?
你的num变量没有声明啊!

论坛徽章:
0
3 [报告]
发表于 2006-03-17 13:34 |只看该作者
我已经改正了,谢谢提点,再帮忙看一下

论坛徽章:
0
4 [报告]
发表于 2006-03-17 13:49 |只看该作者
memset(str,'\0',sizeof(str));
这句没有达到效果,你输出sizeof(str)看看

论坛徽章:
0
5 [报告]
发表于 2006-03-17 13:52 |只看该作者
sizeof(str) 值是4

论坛徽章:
0
6 [报告]
发表于 2006-03-17 13:53 |只看该作者
当输入四个字母时“1234”,打印“1234”没什么情况
应该是输入123时能打印出123正常
1234时是1234o world thank!!!

论坛徽章:
0
7 [报告]
发表于 2006-03-17 13:55 |只看该作者
原帖由 zh_manyu 于 2006-3-17 13:52 发表
sizeof(str) 值是4


你每次memset的时候只将前面的4个字符置为\0,后面的并没有清掉啊,只要你输入超过4个后面的肯定就会输出的啦
还有对指针求sizeof的时候都是4,你应该写上
memset(str,'\0',1024);

论坛徽章:
0
8 [报告]
发表于 2006-03-17 14:20 |只看该作者
我知道了,谢谢!!!!另外linux下如何清除输入缓冲区
是用while((c = getchar()) != '\n');吗

[ 本帖最后由 banboo2004 于 2006-3-17 14:28 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP