【问题标题】:Why does kbhit() always return 0 when input is entered in the Eclipse console?为什么在 Eclipse 控制台中输入输入时 kbhit() 总是返回 0?
【发布时间】:2010-07-09 09:42:59
【问题描述】:

我在 Windows 7 x64 上为 C/C++ 运行 Eclipse CDT (Helios)。起初,我遇到了在 Eclipse 控制台中运行时直到程序退出时才出现输出的问题,即使它在 Windows 控制台中运行时也是如此。我发现这与标准输出流上的缓冲有关。我可以通过以下方式禁用缓冲:

setvbuf(stdout, NULL, _IONBF, 0);

但现在我无法弄清楚为什么即使在控制台中按下键时 kbhit() 总是返回 0。我尝试在标准输入上禁用缓冲:

setvbuf(stdin, NULL, _IONBF, 0);

但这没有任何效果。我的程序是一个 shell 应用程序。我正在使用 kbhit() 和 getch() 来读取输入,这在程序在 Windows 控制台中运行时有效,但在 Eclipse 控制台中无效。我在这里错过了什么?

【问题讨论】:

    标签: c windows eclipse eclipse-cdt kbhit


    【解决方案1】:

    Eclipse 以无法使用“直接”函数kbhit()getch() 的方式实现其控制台。

    您可以设置一个选项以在您的运行和调试配置中打开一个真实的控制台。

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 2010-10-10
      • 2014-05-02
      • 2021-09-08
      相关资源
      最近更新 更多