帮忙看看这C语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/17 02:30:22
#include<stdio.h>
main()
{
char a[30],*ps;
int i=0,j=0,k=0,l=0,m=0;
printf("please input a string\n");
scanf("%s",&a);
ps=a;
while(*ps)
{
if((*ps>='a')&&(*ps<='z'))
i+=1;//小写字母个数//
else if((*ps>='A')&&(*ps<='Z'))
j+=1;//大写字母个数//
else if((*ps=='\t')|| (*ps==' '))
k+=1;//空格个数//
else if((*ps>='0')&&(*ps<='9'))
l+=1;//数字个数//
else
m+=1;//其他字符个数//
ps++;
}
printf("小写字母个数有:%d\n",i);
printf("大写字母个数有:%d\n",j);
printf("空格个数有:%d\n",k);
printf("数字个数有:%d\n",l);
printf("其他字符个数有:%d\n",m);
}
这是一个统计字符串大小写字母,数字,空格,其他符号个数的程序,但是当输入有空格的字符串的时候,算的只到空格前面的字符,后面的都没进入循环,当字符串没有空格的时候,统计的正确的。找了好多资料,一直没找到答案。哪位网友帮帮忙

cin和scanf遇到输入空格就停止了! 要用gets
scanf("%s",&a); 要改成gets(a);

}

scanf输入数据的分隔符是空格及回车!
你输入空格后就表示你的输入已经完成!那输入的字符串里面根本没空格及空格后面的字符串当然程序跑飞了!
更改的方法如楼上哥哥说的:改成gets(a);
楼上的!
拒绝把C++和C混在一起 -_-

用fgets(a, 30, stdin), 以免数组a越界。

scanf输入数据的分隔符是空格及回车,要用gets