gpt4 book ai didi

c - printf 不能在 Eclipse 的控制台上打印?

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:15 30 4
gpt4 key购买 nike

#include<stdio.h>

int main() {
int n, s, i;
do {
printf("n= "); // here is the problem ?
scanf("%d", &n);
} while (n<100 || n <= 0);
s = 0;
i = 0;
while (i <= n) {
i = i + 2;
s = s + i;
}
printf("s=%d", s);
getchar();
return 0;
}

我在 eclipse c/c++ 中运行它,它没有首先打印“n=”。但是当我在 DEV-C++ 或 VS 2017 等另一个 IDE 中运行它时,它运行良好。在 printf 之后添加此行时,我按预期运行。

fflush(stdout);

这里有什么问题?

最佳答案

printf 除非刷新缓冲区,否则不会打印到屏幕

看起来您的流已缓冲。您写入 stdout 和其他流的数据会被缓冲,并在您刷新缓冲区后全部输出。这允许更好的性能,因为 IO 在所有 CPU 操作中是最慢的。

此时,您至少有以下选择:

  1. 每次使用 printf 时,通过调用 fflush( stdout ) 显式刷新缓冲区
  2. 禁用缓冲 setbuf(stdout, NULL);
  3. printf 字符串末尾使用换行符 \n 刷新缓冲区 例如:printf("n=\n");<

您的代码在某些环境中工作可能是因为那里禁用了缓冲。

关于c - printf 不能在 Eclipse 的控制台上打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44098943/

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