c语言input char问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 18:46:27
输入这个
{
int digit;
char ch;
printf("Enter a digit:\n");
scanf("%d",&digit);

printf("Enter a charcter:\n");
scanf("%c",&ch);
printf("digit=%d character=%d\n",digit,ch);
return 0;
}
为什么在Enter a charcter:之后不等user输入直接就跳去digit=%d character=%d这里了。
但是如果打两个scanf("%c",&ch);就解决了。希望有详细点的解释,谢谢

因为换行也是一个字符啊,(ascII = 10)
加个getchar()接受换行就行了
#include<stdio.h>
int main()
{
int digit;
char ch;
printf("Enter a digit:\n");
scanf("%d",&digit);

getchar();
printf("Enter a charcter:\n");
scanf("%c",&ch);
printf("digit=%d character=%d\n",digit,ch);
return 0;
}

scanf("%d",&digit);

在它之后加入以下一句:

fflush(stdin);

原因是在输入digit时按了一下回车,这个回车也是一个字符,会被下面的scanf("%d",&ch)读取,加入那一句就是为了刷新缓冲区,不让这个回车符遗留在缓冲区中。