getchar()不是只能得到一个字符吗,为什么还能用来判断输入一段字符?

来源:百度知道 编辑:UC知道 时间:2024/06/05 21:02:11
#include <stdio.h>
main()
{
char c;
int letters=0,space=0,degit=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>'A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n",letters,space,
digit,other);
}
这里面的getchar()就可以是一段字符?

getchar()它是这样的
它确实每次只能读取一个字符
但是循环下一次遇到getchar()
其实是从缓冲区读取你上一次输入的字符串剩下的字符,直到遇到'\n'才结束
如果没有设定'\n'这个条件,那么接下来的getchar()才是再一次键盘输入
所以你才会产生"每次出来一个字符,并且下一次循环是再次输入"这种错觉

这里的getchar是逐个判断字符!
并不是判断字符串!
while((c=getchar())!='\n') /*当第一个字符不是回车时开始循环*/
{
if(c>='a'&&c<='z'||c>'A'&&c<='Z')
letters++; /*第一个字符是字母letters开始计数*/
else if(c==' ')
space++; /*是空格空格就开始计数*/
else if(c>='0'&&c<='9')
digit++; /*若是数字数字就开始计时*/
else
other++;/*否则其他的开始计数*/

c=getchar()每次接受的仍然是一个字符,但是可以利用while进行循环,循环的条件是getchar()接受的字符不为‘\n’,否则退出循环。

while((c=getchar())!='\n')

是循环语句,一次判断一个字符,直到读入的是回车

你这个程序本身就不完整!