新手遇到一个c的小问题,求解惑!!!

wysdaomei 2015-01-20 09:44:45
这样一个小程序:
char s[10];
int i;
for(i=0;i<10;i++)
scanf("%c",&s[i]);
int m=strlen(s);
printf("%d",m);
这样一个程序最后输出m发觉不是10,我用puts(s)输出后发现,在字符串后面还有一些乱码;但是后来不用字符输入,而是用字符串输入scanf("%s",s);这样就对了!
所以有点不明白为什么会出现这样的问题,难道就是因为字符输入最后没有'\0'的缘故么,但是我已经输入10个字符,怎么还有空间呢!
因为刚学c,所以遇到的麻烦挺多的,麻烦大神解答下!
...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wysdaomei 2015-01-21
  • 打赏
  • 举报
回复
谢谢,明白了
torypprop 2015-01-20
  • 打赏
  • 举报
回复
for(i=0;i<10;i++) scanf("%c",&s[i]);不会在输入结束后一位加上\0,如同int,double,float一样 scanf("%s",s);在遇到空白符(包括回车、空格、制表符等)停止输入,在后一位加上\0,你说的已经输入10个字符,那已经越界了,C语言不作越界检查,可能有危险 用gets函数更好,可以输入空格,同时fgets还限制长度

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧