我无法理解我的节目的行为。它调用scanf,然后是ungetc,然后是printf。
我无法理解输出行为背后的原因。如果有人澄清了这一行为,这就是code.Would提供的巨大帮助。
int main()
{
int n=0;
scanf("%d",&n);
ungetc(n,stdin);
printf("%d\n",n);
return 0;
}gcc编译器和linux中的输出:首先给出90,然后它等待另一个数字,在我给出另一个数字之后,它打印90。
发布于 2012-07-07 14:12:45
以\n结束您的\n格式会指示scanf()在您的数字之后使用它所看到的所有空格。它看起来像是在等待另一个输入,因为它会读取,直到得到一些非空格字符。您输入的内容并不是实际读取的,而是留给stdin进行后续读取。
发布于 2012-07-07 14:15:18
扫描格式
scanf("%d\n",&n);使用您输入的数字之后的所有空格。因此,只有在输入了非空白字符(以及向程序发送输入的换行符)之后,扫描才会完成。\n不具体要求换行符,它告诉scanf使用以下所有空格并忽略它。
https://stackoverflow.com/questions/11375611
复制相似问题