Eclipse CDT和getch()

时间:2015-03-28 03:27:16

标签: c eclipse-cdt getch

我试过谷歌搜索我的问题的答案,但我似乎找不到。

这是我非常简单的测试代码:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void) {
    char ch;

    printf("Enter character: ");
    ch = getch();
    printf("%c", ch);

    return 0;
}

当我尝试在Eclipse中运行它时,我甚至无法显示第一个printf行,并且执行任何按键都不起作用。

我也尝试过fflush(stdout)和fflush(stdin),但程序并不像我想要的那样。如果我在Visual Studio上尝试这个,它可以很好地工作。

有谁知道为什么?谢谢。

3 个答案:

答案 0 :(得分:1)

output, for instance to the console/terminal, is buffered.   
it will not actually be output until either: 
1) a newline is output. 
2) fflush(stdout) is called.  
3) a read from stdin is performed 

using getchar() will cause the stdout output buffer
to be flushed to the console/terminal.

the final printf() is not showing for this same reason.
suggest changing the format string from "%c" to "%c\n"

答案 1 :(得分:0)

出现Eclipse控制台窗口,不支持键盘输入。

要解决此问题,您可以配置调试会话以启动外部终端窗口。

在Eclipse-Oxygen上,您可以从“调试配置”对话框中执行此操作。在“调试器”标签中,找到指定以下内容的复选框

  

使用劣质的外部控制台(为打开新的控制台窗口   输入/输出)

在C ++中使用cin时也会发生此问题。看到以下问题:c++ debug mode in eclipse causes program to not wait for cin

答案 2 :(得分:-1)

尝试在前面添加这些行以打开控制台:

FILE * a = fopen("CON","w");
freopen("CON","w",stdout);
freopen("CON","r",stdin);
fclose(a);
祝你好运!