gpt4 book ai didi

c - 简单的 C 流程没有按预期流动

转载 作者:行者123 更新时间:2023-12-02 07:31:29 25 4
gpt4 key购买 nike

我正在自学 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;
}

当程序启动时,它不会提示我输入号码。它确实让我输入一个。按回车键后,它让我输入另一个,依此类推,直到我返回 0。然后它打印出它应该早先打印出的所有内容,然后退出。

例如,如果我启动程序,然后键入 7890,在每一个之后按回车键,控制台应该是这样的:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com