我有以下代码,其中 check 是字符类型
do{
printf("Do you want to add an edge(n to stop adding)\n");
check = getchar();
}while(check!='n');
和
do{
printf("Do you want to add an edge(n to stop adding)\n");
scanf("%c",&check);
}while(check!='n');
它们都产生相同的输出
例如对于 r\n 我得到 Do you want to add an edge 两次并且对于 tt\n</strong> 我得到同样的问题三次,然后询问输入。
我的问题是如何避免它以及它为什么会发生?
最佳答案
要解决您的问题,请尝试以下操作:
void main()
{
char check;
char c;
do
{
printf("Do you want to add an edge(n to stop adding)\n");
check = getchar();
do { c = getchar(); } while (c != '\n' && c != EOF); // This gobbles the rest of the chars on stdin
} while(check != 'n' && check != EOF);
}
关于c - C语言从键盘输入一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096137/