c语言为啥scanf()后要加个getchar()?

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言为啥scanf()后要加个getchar()?相关的知识,希望对你有一定的参考价值。

问:

C语言 这个程序为什么要加getchar() 前面有scanf了啊
#include <stdio.h>
main()
{
char a;
int i,b;
scanf("%c",&a);
getchar();
for (i=0;i<26;i++){
b=a+i;
if((a>=‘a’&&a<=‘z’&&b>‘z’)||(a>=‘A’&&a<=‘Z’&&b>‘Z’))
b=b-26;
printf("%c", b);
}
printf("\\n");
}

答1:

加getchar(); 的目的是吸收掉前面执行scanf("%c",&a); 时遗留在输入缓冲区里的’\\n’,以免后面还有某些输入语句时由遗留在输入缓冲区里的’\\n’引起错误。在这段代码中,后面已经没有输入语句了,所以有没有getchar();都可以。

答2:

scanf函数读完一个字符后,缓冲区里还留下一个你输入的回车,所以要用getchar读出来并丢弃。在此程序中确实没有必要这么做,但是你可以试试连续用多个scanf读取字符,就会知道什么时候该这样做了。

以上是关于c语言为啥scanf()后要加个getchar()?的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中scanf能作为用户标示符么?为啥?scanf不是关键词么?

为啥scanf不能接收键盘输入,被跳过???改成C++的cin>>后便可以接收并继续下去。全部换成C++可以运行。

每日一答(89)C语言问题,while中的getchar()为何要加!=' '?

怎么在C语言中实现scanf和getchar同时使用?

getchar和putchar与scanf和printf的区别

喵呜 来啦来啦:C语言gets(),scanf()与getchar()函数的区别