2016-09-02 1 views
1

Ich weiß, wie man fgets in einer while-Schleife verwendet, um eine ganze Textdatei zu lesen, aber wie kann ich eine Taste innerhalb dieser Schleife drücken, so dass sie nacheinander eine andere Zeile liest?Lies jede Zeile in einer Textdatei, wenn ich eine Taste drücke? C Programmierung

Ich versuchte mit einem einfachen printf ("Drücken Sie eine beliebige Taste \ n") getchar(), aber nichts passiert, ich laufe das Programm und es tut einfach nichts, nicht einmal die erste Zeile anzeigen. Ich gehe davon aus das eine dumme Frage sein kann, aber ich kann nicht finden, wie diese

hier tun :(ist, was ich versucht habe:

/* gcc readline.c -Wall -o read */ 

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

int main (int argc, char *argv[]) { 

    char url[]="dbus.log"; 
    FILE *arq; 
    char info[1000]; 

    arq = fopen(url, "r"); 

    while (fgets(info, sizeof(info), arq) != NULL) {   
     printf("%s", info); 
     printf("Press Any Key to Continue\n"); 
     getchar(); 
    } 

    fclose(arq); 
    return 0; 
} 
+0

im sorry, aber was meinst du? soll nicht getchar() auch mit enter arbeiten? – nightk

+0

es kann jeder Schlüssel für mich sein – nightk

+0

@ user3121023 gleiche Ergebnisse, nicht hier arbeiten – nightk

Antwort

2

Das Programm zeigt nicht den Aufforderungen, weil stdio wird gepuffert und Sie Spülung nicht verwenden fflush (stdout), das gepufferte Ausgang erzeugt wird, um sicherzustellen,

wie folgt aus:..

fflush(stdout); 
getchar(); 

beachten Sie auch, dass standardmäßig stdin ist in „gekocht“ IO Modus drücken Enter wird ein Zeichen erzeugen, aber andere Zeichen werden gepuffert bis Enter gedrückt wird.

+0

Oh, ich sehe! Es funktioniert jetzt gut! – nightk

+0

Danke für die Antwort und für die Erklärung zu mir @Art Yerkes! : D – nightk

Verwandte Themen