在练习测定一串字符的英文字母、空格、数字和其他字符的个数的时候,我碰到了scanf()输入无法进行下去的问题。通过相关资料了解,解决了该问题,接下来让我们看看。
以下是题解:
#include <stdio.h>
#include <math.h>//下面要调用getchar()函数,为stdio.h中的库函数
int main()
{
char c;//定义一行字符
int num_English=0,num_space=0,num_count=0,num_other=0;
printf("Input: ");
while((c=getchar())!='\n')//调用getchar()函数 ,while(getchar()!='\n')为消除回车;
{
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))//判断英文字母
{
num_English++;
}
else if(c==' ')//判断空格
{
num_space++;
}
else if(c>='0'&&c<='9')//判断数字
{
num_count++;
}
else//判断其余的
{
num_other++;
}
}
printf("Output:\n");
printf("%d %d %d %d",num_English,num_space,num_count,num_other);
return 0;
}
运行结果为:
Input: What are you doing? 123456
Output:
15 4 6 1
--------------------------------
Process exited after 18.31 seconds with return value 0
请按任意键继续. . .
这里或许有人会疑惑为什么不能用scanf,因为我们测试字符串中包含空格,虽然scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hello everyone",则应该使用gets()函数。
而scanf()遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格,
因此引用了gets()函数,gets能够接受空格、制表符Tab和回车等.