题目描述: 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
输入格式:一行字符,长度不超过200
出现问题:空格被当成了‘\0'
#include
int main()
{ char ch[200];
int i=0;
int sum1=0, sum2=0, sum3=0, sum4=0;
scanf("%s",ch);
while(ch[i] != '\0')
{
if((ch[i] >=96 && ch[i] <=125) || (ch[i] >=60 && ch[i] <=90))
sum1 += 1;
else if (ch[i] >=48 && ch[i] <=57)
sum2 += 1;
else if (ch[i] == 32)
sum3 += 1;
else
sum4 += 1;
++i;
}
printf("%d %d %d %d", sum1, sum2, sum3, sum4);
return 0;
}
因为scanf的输入就是到空格结束,可以使用gets作为输入
#include<stdio.h>
int main()
{
char str[25] = { 0 };
gets(str);
printf("%s\n", str);
return 0;
}
scanf遇到空格、换行、制表符就自动截断
你可以使用gets函数,gets只有遇到换行才截断
或者循环scanf,直到遇到EOF
第6行:scanf("%s",ch); 修改为: scanf("%[^\n]",ch); 即可实现用scanf()只有遇到换行符'\n'才结束输入,而读入空格等字符。