如果有其他情况,希望可以发在评论区,谢谢!
需要情况1:当接受字符ch前面有scanf语句时,必须要用空的getchar()来吃掉回车,
#include"stdio.h"
int main()
{
char a,ch;
scanf("%c",&a);
getchar();//如果没有,ch接受到的就是空格
ch=getchar();
printf("a=%c\n",a);
printf("ch=%c\n",ch);
}
需要情况2:连续用2个getchar()接收字符时,中间要用一个空的getchar()来吃掉回车,否则第二个字符接收不了
#include"stdio.h"
int main()
{
char ch1,ch2;
ch1=getchar();
getchar();//没有ch2接受到的就是换行符,如下图所示
ch2=getchar();
printf("ch=%c\n",ch1);
printf("ch=%c\n",ch2);
}

不需要情况:gets(a)后面要接收ch是不需要用空的getchar()吃掉回车的
#include"stdio.h"
int main()
{
char a[100],ch;
gets(a);
ch=getchar();
puts(a);
printf("ch=%c\n",ch);
}

本文探讨了C语言中getchar与scanf函数的使用细节,特别是在处理输入时如何避免回车符的影响。文章通过具体示例说明了在不同情况下,如接受字符前有scanf语句或连续使用getchar时,如何正确使用空的getchar来吃掉回车,以确保后续字符的正确读取。

被折叠的 条评论
为什么被折叠?



