求助,统计字符个数,为啥结果不对!

曹宇 2011-11-22 10:39:04

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

void main ()
{
char a[10];
int i=0;
scanf("%s",a);
fflush(stdin);
while(a[i]!='\0')
i++;
printf("%d",i);
}


我输入1-9个字符的结果都对 但是我输入10个字符结果就是11.请问为啥程序算出来是11?
如我输入123\n结果是3 可是我输入1234567890\n结果就是11!

迷茫,谢谢了!
...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
曹宇 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 youkuxiaobin 的回复:]
数组越界了
[/Quote]
恩,是啊。呵呵,谢谢啦!
youkuxiaobin 2011-11-22
  • 打赏
  • 举报
回复
数组越界了
曹宇 2011-11-22
  • 打赏
  • 举报
回复
恩,如果\0也算个那我明白了,呵呵。谢谢了!


呵呵,我运行好多次了。我就是想试试数组范围的问题。我改成过20,100等等,都是输入了正好20,100个字符去试验都是结果是21和101.呵呵。\0算一个我明白怎么回事了!呵呵!

谢谢了大家!!!!!
yi_afly 2011-11-22
  • 打赏
  • 举报
回复
你重新运行下试试还是不是11
無_1024 2011-11-22
  • 打赏
  • 举报
回复
"123" <=>'1' '2' '3' '\0'
無_1024 2011-11-22
  • 打赏
  • 举报
回复
是的
'\0'也要算一个
曹宇 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnuqinhuan 的回复:]
因为你的数组越界了
数组分配大一点
char s[20];
[/Quote]
我就是不明白这一点。我知道我设定的是10可是我输入的是10个字符,是不是字符串结束标志\0也算一个字符啊?
無_1024 2011-11-22
  • 打赏
  • 举报
回复
因为你的数组越界了
数组分配大一点
char s[20];

69,371

社区成员

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

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