c语言 统计字数

来源:百度知道 编辑:UC知道 时间:2024/05/05 06:51:39
程序是这样的:
#include <STDIO.H>
main()
{int i,num=0,cha=0,spa=0,oth=0;
char c[30];
gets(c);
for(i=0;i<=29;i++)
{if(47<c[i]&&c[i]<58)num=num+1;
else if((64<c[i]&&c[i]<91)||(96<c[i]&&c[i]<123))cha=cha+1;
else if(c[i]==32)spa=spa+1;
else oth=oth+1;
}
printf("num%d cha%d spa%d oth%d",num,cha,spa,oth);

}
我想编一个程序,统计输入的字数以及'\0'的数量,不过结果cha总会加1,oth总会少1,请问各位大虾为什么?
我定义7个元素就正常了,为什么

c[30]都越界啦!

#include <stdio.h>
void main()
{int i,num=0,cha=0,spa=0,oth=0;
while((i=getchar())!='\n')
{if(47<i&&i<58)num=num+1;
else if((64<i&&i<91)||(96<i&&i<123))cha=cha+1;
else if(i==32)spa=spa+1;
else oth=oth+1;
}
printf("num%d cha%d spa%d oth%d",num,cha,spa,oth);

}
我感觉这个答案比你的好,你按照自己的意思修改一下,别忘了谢谢我呀!呵呵!

你先将c[30];赋个值看看
我估计是gets(c); 这里的问题
它把最后一个字符给弄掉了吧

我试了下,没问题!!