Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在Eclipse控制台中输入时kbhit()总是返回0?_C_Windows_Eclipse_Eclipse Cdt_Kbhit - Fatal编程技术网

为什么在Eclipse控制台中输入时kbhit()总是返回0?

为什么在Eclipse控制台中输入时kbhit()总是返回0?,c,windows,eclipse,eclipse-cdt,kbhit,C,Windows,Eclipse,Eclipse Cdt,Kbhit,我正在Windows7x64上运行用于C/C++的EclipseCDT(Helios)。起初,我遇到了在Eclipse控制台中运行时直到程序退出才显示输出的问题,即使它在Windows控制台中运行时显示了输出。我发现这与标准数据流上的缓冲有关。我可以通过以下方式禁用缓冲: setvbuf(stdout, NULL, _IONBF, 0); 但是现在我不明白为什么kbhit()总是返回0,即使在控制台中按下键。我尝试在stdin上禁用缓冲: setvbuf(stdin, NULL, _IONBF

我正在Windows7x64上运行用于C/C++的EclipseCDT(Helios)。起初,我遇到了在Eclipse控制台中运行时直到程序退出才显示输出的问题,即使它在Windows控制台中运行时显示了输出。我发现这与标准数据流上的缓冲有关。我可以通过以下方式禁用缓冲:

setvbuf(stdout, NULL, _IONBF, 0);
但是现在我不明白为什么kbhit()总是返回0,即使在控制台中按下键。我尝试在stdin上禁用缓冲:

setvbuf(stdin, NULL, _IONBF, 0);

但这没有效果。我的程序是一个shell应用程序。我使用kbhit()和getch()来读取输入,当程序在Windows控制台中运行时,这会起作用,但不会在Eclipse控制台中运行。我在这里遗漏了什么?

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


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

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

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