当我有一个scanf后跟一个getchar时,为什么getchar总是一直获取scanf的最后一个定界字符?我该如何阻止呢?我尝试研究scanf的“格式说明符”,阅读了很多东西,但没有一个能解决这个问题。
代码如下所示-
#include <stdio.h>
#include <conio.h>
int main()
{
int a;
char b;
printf ("Enter an integer \n");
scanf_s(" %d", &a);
printf("Enter a character \n");
b = getchar();
printf("The integer you entered is %d \n", a);
printf("The character you entered is %c \n", b);
_getch();
return 0;
}
输出如下- 输入一个整数 4563 输入一个字符 您输入的整数是4563 您输入的字符是
getchar将返回我在整数输入末尾按下的回车键。打印“输入字符”后,屏幕甚至没有停止。正确的方法是什么?
答案 0 :(得分:1)
使用scanf(" %c", &b)
代替getchar()
当您在%c
之前放置空格时,请清洁缓冲区
或者您也可以使用此方法清洗缓冲区:
int ch;
while ((ch = getchar()) != '\n' && ch != EOF);
完整示例:
int main(void)
{
printf("Enter an integer \n");
int a;
scanf(" %d", &a);
int ch;
while ((ch = getchar()) != '\n' && ch != EOF) {
}
printf("Enter a character \n");
char b = getchar();
printf("The integer you entered is %d \n", a);
printf("The character you entered is %c \n", b);
_getch();
}
但是我认为scanf()