我在自学C。我的背景是Java。
我正在编写一个简单的控制台应用程序,该应用程序应提示用户输入一个数字,然后告诉用户他打印了哪个数字,然后提示他输入另一个数字。如果用户输入0,程序将退出。
我的代码不符合我的期望。这是代码:
#include <stdio.h>
int main() {
while (1) {
printf("Please enter a number: ");
int this_is_a_number = 0;
scanf("%d", &this_is_a_number);
printf("You entered %d\n", this_is_a_number);
if (this_is_a_number == 0) {
break;
}
getchar();
}
return 0;
}
程序启动时,不会提示我输入数字。它确实允许我输入。打入return之后,它让我输入另一个,依此类推,直到我返回0。然后它将原来应该打印的所有内容打印出来,然后退出。
因此,例如,如果我启动该程序,然后键入
7
,8
,9
和0
,每输入一次返回值,控制台应如下所示:Please enter a number:
7
You entered 7
Please enter a number:
8
You entered 8
Please enter a number:
9
You entered 9
Please enter a number:
0
You entered 0
但是,它看起来像这样:
7
8
9
0
Please enter a number:
You entered 7
Please enter a number:
You entered 8
Please enter a number:
You entered 9
Please enter a number:
You entered 0
我对C中的流程不了解什么?
最佳答案
这可能是由于输出被缓冲的事实引起的。尝试在每个printf
之后用fflush
刷新缓冲区,例如:
printf(...);
fflush(stdout);
scanf(...);
您甚至可以通过
setbuf(stdout, NULL)
直接禁用缓冲。关于c - 简单的C流未按预期流动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21172813/