2017-09-22 7 views
2

Je dois obtenir de nombreux caractères un par un avec la fonction getchar().flushall() ne fonctionne pas - en C

Je dois nettoyer le tampon après avoir utilisé la fonction, mais flushall() ne le fait pas. Après la deuxième itération de la fonction, il obtient '\n' en entrée. J'ai essayé d'utiliser fflush(), _flushall(), mais personne ne réussit à le faire. Quelle est la raison de ceci? aidez s'il vous plaît.

Remarque: Je dois utiliser getchar().

int i; 
char c; 
for (i = 0; i < 5; i++) 
{ 
    c = getchar();  
    printf("%c", c); 
    _flushall(); 
} 
+0

Où est votre code? Et ce que vous essayez de faire n'est pas clair. –

+1

'_flushall;' => '_flushall();'. Vous n'êtes pas en train d'appeler la fonction, vous évaluez simplement (et rejetez) le pointeur. –

+0

John Bode, _flushall() ne fonctionne pas. alk, pourquoi dois-je écrire tout cela au lieu d'utiliser flush? – Asher

Répondre

2

Si vous voulez jeter indésirable dans le tampon d'entrée, une bonne façon de le faire est

int c; 
do c = getchar(); while (c != EOF && c != '\n'); 

Ceci annule jusqu'au prochain saut de ligne ou de fin de fichier, qui est habituellement ce que vous voulez.

Si vous essayez d'écrire un programme qui répond à une seule touche au fur et à mesure que l'utilisateur appuie sur chacun d'eux, cela ne fonctionnera pas pour vous, mais l'interface ne fonctionnera pas pour vous; vous aurez besoin d'utiliser autre chose, comme ncurses ou une bibliothèque GUI "widget".