2015-03-28 2 views
0

J'ai essayé de googler une réponse à mon problème, mais je n'arrive pas à en trouver un.Eclipse CDT et getch()

Voici mon code de test très simple:

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

int main(void) { 
    char ch; 

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

    return 0; 
} 

Lorsque je tente de lancer ce dans Eclipse, je ne peux pas même la première ligne de printf pour afficher, et effectuer des frappes de touches ne fait rien.

J'ai également essayé de faire fflush (stdout) et fflush (stdin), mais le programme ne fonctionne pas comme je le veux. Si j'essaye ceci sur Visual Studio, cela fonctionne parfaitement.

Est-ce que quelqu'un a une idée pourquoi? Merci.

+0

Comptez-vous compiler en utilisant CDT? Quel compilateur utilisez-vous? Notez également que conio.h ne fait pas partie de la bibliothèque standard C, donc la compilation avec autre chose que le compilateur MS échouera probablement. – Cilyan

+0

J'ai réussi à compiler en utilisant CDT. Mon compilateur est Mingw. Au départ, je n'avais pas conio.h, ne travaillait pas. J'ai jeté dans conio.h parce que les sources en ligne disent que getch() fait partie de cette bibliothèque, mais elle ne fonctionne pas comme je le veux dans la console eclipse. Maintenant, je l'ai débogué en utilisant la console de Windows, et il fonctionne comme je le veux .. ne fonctionnera pas correctement dans la console Eclipse .. –

+0

Vous devriez utiliser 'getchar' à la place. Je doute que lancer 'conio.h' comme ça va faire du bien. https://stackoverflow.com/questions/9180001/what-is-the-difference-between-getch-and-getchar – Cilyan

Répondre

-1

Essayez d'ajouter ces lignes en avant pour ouvrir la console:

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

Bonne chance!

+0

cela ne répondra pas à la question par l'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 question est le problème n'est pas sur la ligne printf, il est en ligne getch(), getch n'a pas de retour lorsque nous exécutons ce programme en éclipse. Pour autant que je sache, éclipse a un problème d'utilisation getch dans sa console – shijq73