c语言中用getchar()接收回车

#include<stdio.h>
#include<ctype.h>
void SwitchShow(char c);
int main()
{
char cCharPut;
char cCharTemp;
printf("the first string is:");
scanf("%c",&cCharPut);
SwitchShow(cCharPut);
cCharTemp=getchar();
printf("the second string is:");
scanf("%c",&cCharPut);
SwitchShow(cCharPut);
return 0;
}
void SwitchShow(char cChar)
{
if (isalpha(cChar))
{
printf("输入的是字母\n");
}
if (isdigit(cChar))
{
printf("输入的是数字\n");
}
}
问题就在这句cCharTemp=getchar();
注释说是用来接收回车的,我不太明白为什么会放在程序中的这个位置,不是有\n就已经是回车了么,而且我试过了,没有这句的话程序会执行不下去

cCharTemp=getchar();主要是接受scanf("%c",&cCharPut);这里按的回车,执行程序时,你输入a,然后回车,实际上缓冲区接受的是两个字符,第一个是'a'第二个是‘\n',scanf("%c",&cCharPut);只把a从缓冲区中取走,但是'\n'还在缓冲区。如果没有getchar这个语句,那么下面的语句scanf("%c",&cCharPut);就会直接读取缓冲区中的'\n‘而不会等到你再去输入字符。而getchar是取走缓冲区中一个字符,把回车给取走,缓冲区空了,你才能再次输入
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-21
就像上面的仁兄说的,
这里的getchar()其实只是为了清除键盘缓冲区中的回车符用的。它的目的是防止下一次执行scanf时,将键盘缓冲区内的回车当作本次用户输入数据给错误地读入。
把他删掉,那么第二次scanf接收到的字符就是回车了,

比如:你第一次输入的是A然后回车。那么缓冲区里就会有A和回车两个字符,第一次取走了A,那么回车不取走清除的话,第二次scanf就会直接误读到回车。本回答被网友采纳
第2个回答  2013-12-21
如果没有这句cCharTemp=getchar();
那么回车符会被printf("the second string is:");
scanf("%c",&cCharPut);接收了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网