为什么在Eclipse控制台中输入时kbhit()总是返回0?
我正在Windows7x64上运行用于C/C++的EclipseCDT(Helios)。起初,我遇到了在Eclipse控制台中运行时直到程序退出才显示输出的问题,即使它在Windows控制台中运行时显示了输出。我发现这与标准数据流上的缓冲有关。我可以通过以下方式禁用缓冲:为什么在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
setvbuf(stdout, NULL, _IONBF, 0);
但是现在我不明白为什么kbhit()总是返回0,即使在控制台中按下键。我尝试在stdin上禁用缓冲:
setvbuf(stdin, NULL, _IONBF, 0);
但这没有效果。我的程序是一个shell应用程序。我使用kbhit()和getch()来读取输入,当程序在Windows控制台中运行时,这会起作用,但不会在Eclipse控制台中运行。我在这里遗漏了什么?Eclipse以一种无法使用“直接”函数
kbhit()
和getch()
的方式实现其控制台
您可以设置一个选项,在运行和调试配置中打开一个真正的控制台。Eclipse以一种无法使用“直接”函数
kbhit()
和getch()
的方式实现其控制台
您可以设置一个选项,在运行和调试配置中打开真正的控制台