为什么运行这段代码并打印整个字符串?
#include <stdio.h>
void main()
{
int a;
while(a!='q')
{
scanf("%c",&a);
printf("%c",a);
}
}
输入除q之外的字符串,最后按回车键。现在您的字符串才会打印在屏幕上。为什么?
最佳答案
这里的问题不在于 scanf,而在于您的 printf 调用。
Printf 会缓冲输出,直到到达新行,因此程序在您 printf("\n");
之前不会显示任何内容。 (当有人按 Enter 时也会发生这种情况,您将他们的返回输出到屏幕,这会导致缓冲区刷新。)
如果您不想使用 printf("\n")
分解输出,则可以使用 fflush(stdout)
手动刷新缓冲区不打印任何内容,如下所示:
int a;
while(a!='q')
{
scanf("%c",&a);
printf("%c",a);
fflush(stdout);
}
关于c - scanf() 函数的魔力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2973449/