【问题标题】:Problems with fflush(stdout);fflush(stdout) 的问题;
【发布时间】:2016-10-25 04:27:02
【问题描述】:

我开始编程并了解了以下命令 fflush(stdout);。我明白为什么大多数平台都需要它,但我仍然在问自己一些问题......

1.\n 不应该在 msys2 上缓冲,因为它是行缓冲的吗? (薄荷)

2.为什么我需要在Eclipse上使用,而在Clion上不需要使用?

3.我是唯一一个在 Eclipse 和 Msys2 上遇到这个问题的人吗?

编辑:3.1。我问是因为我不需要 fflush(stdout);在我学校的 Windows 计算机上。这是为什么呢?

【问题讨论】:

  • 实际上,如果我的 printf 输出以 \n 结尾,它不会改变任何东西。它只是没有显示在屏幕上。但即使我没有将 \n 放入 Clion,它仍然会在 IDE 的终端中显示输出。
  • 欢迎来到美妙的 IDE 世界。我还没有找到一个很好的 IDE 可以在 Mac 上使用——但我是个古董,也没有找到一个很好的 IDE 可以在其他任何地方使用。 Eclipse 处理 C 程序的“终端 I/O”的方式存在问题。最近一两个月有一个关于这个话题的问题;找到它会很痛苦。 (而且 Windows 做的事情不同,因为它是 Windows。)
  • 我听说 Xcode 非常适合 Mac。但我在 Windows 上,所以是的……(我与众不同!)
  • 我最近看到很多初学者用前导换行符编写输出。这将刷新先前的输出而不是当前的输出。你不这样做?你把换行符("\n")放在最后?
  • 取决于stdout 指向的内容。它通常继承自其父进程,可以是任何东西,包括文件(想想> out 重定向)。有些终端系统是行缓冲的,有些不是。

标签: c eclipse clion msys2 fflush


【解决方案1】:

[这个答案是关于fflush(stdin),并不是真正的答案。
fflush(stdout) 没有未定义的行为。]

fflush 用于清除标准输出缓冲区,它具有未定义的行为。有时,fflush 不起作用,最好改用 fpurge。

有关您在 Windows 上的行为的问题的更多信息,请参阅此线程 - How come fflush(stdin) function is not working?

【讨论】:

  • OP 正在刷新stdout。此外,fpurge 不是标准 C 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 2021-10-14
  • 1970-01-01
相关资源
最近更新 更多