【发布时间】:2022-02-23 06:12:25
【问题描述】:
所以在运行 Ubuntu 的 vm 上的旧安装遇到太多问题后,我刚刚在 windows 上安装了 eclipse。
除了我在标题中写的以外,所有问题都消失了。无论我运行哪个程序,scanf 文本都不会首先出现。当我输入所有可以输入的内容时,它会显示文本。举个例子吧:
#include <stdio.h>
#include <stdlib.h>
int main() {
int number1;
int number2;
printf ("Type in a number \n");
scanf ("%d", &number1);
printf ("Type in a number \n");
scanf ("%d", &number2);
int number3 = number1 * number2;
printf ("%d", number3);
return 0;
}
控制台如下所示:
2
3
Type in a number
Type in a number
6
2 和 3 我必须先输入,然后显示最后三行。不应该是这样的吧?
感谢您的帮助!
【问题讨论】:
-
Eclipse 控制台的这种方式很有趣。我通常在每个
printf后面加上一个fflush(stdout);来解决它。 -
与
setbuf(stdout, NULL)相比,更好的折衷方案是setlinebuf(stdout),并确保所有printf在格式字符串的末尾都有\n。