2015-03-28 5 views
0

Я пробовал найти ответ для своей проблемы, но я не могу найти его.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, он отлично работает.

У кого-нибудь есть идея, почему? Благодарю.

+0

У вас есть возможность скомпилировать CDT? Какой компилятор вы используете? Также обратите внимание, что conio.h не является частью стандартной библиотеки C, поэтому компиляция с чем-либо еще, чем компилятор MS, скорее всего, не удастся. – Cilyan

+0

Мне удалось скомпилировать CDT. Мой компилятор работает. Я изначально не имел conio.h, не работал. Бросил conio.h, потому что онлайн-источники говорят, что getch() является частью этой библиотеки, но он не работает, как я хочу, в консоли eclipse. Как раз сейчас я отлаживал его с помощью консоли Windows, и он работает, как я хочу. Просто не будет работать правильно в консоли eclipse. –

+0

Вместо этого вы должны использовать 'getchar'. Я сомневаюсь, что вы выбрали 'conio.h', как будто это принесет пользу. https://stackoverflow.com/questions/9180001/what-is-the-difference-between-getch-and-getchar – Cilyan

ответ

-1

Попробуйте добавить эти строки перед, чтобы открыть консоль:

FILE * a = fopen("CON","w"); 
freopen("CON","w",stdout); 
freopen("CON","r",stdin); 
fclose(a); 

Удачи!

+0

это не ответит на вопрос OP – user3629249

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" 
+0

Вопрос OP - проблема не на линии printf, это на линии getch(), getch не имеет возврата, когда мы запускаем эту программу в eclipse. Насколько я знаю, eclipse имеет проблемы с использованием getch в своей консоли – shijq73