Problem beim Lesen aus einer Datei und Ausgabe der Daten auf den Bildschirm - File Handling
-
Hallo,
ich habe mit der Anweisung fprintf(...) und mit Hilfe einer for-Schleife die Zahlen 32 - 255 inkl. ASCII-Code direkt in eine Datei geschrieben wie folgt:
ordnungszahl = 32; for (zeilenzahl = 1 ; zeilenzahl <= 14; zeilenzahl++) { for(ordnungszahl; ordnungszahl<=zeilenzahl * 16 + 31; ordnungszahl++) { fprintf(au_kan, "%4d", ordnungszahl); } fprintf(au_kan, "\n"); ordnungszahl = ordnungszahl - 16; for(ordnungszahl; ordnungszahl<= zeilenzahl * 16 + 31; ordnungszahl++) { fprintf(au_kan, "%4c", ordnungszahl); } fprintf (au_kan, "\n\n"); } fclose (au_kan);
Das hat auch super geklappt. Nun möchte ich diese Zahlen und Zeichen aus der Datei lesen und auf dem Bildschirm ausgeben. Da nicht der komplette Zahlen/Zeichensatz auf den Bildschirm passt, soll nach der Hälfte der Zahlen/Zeichen = Nr. 143 das Programm anhalten und auf einen Tastendruck warten. Ich habe das ganze so programmiert (ascii ist die Variable, die die Zeichen/Zahlen aufnehmen soll):
ascii = fgetc(ei_kan); /* Dateiinhalt zeichenweise lesen */ while (ascii != EOF) /* bis EOF erkannt ist */ { fputc (ascii, stdout); /* Zeichen in den Ausgabekanal */ ascii = fgetc(ei_kan); /* Zeichen zeichenweise lesen */ if (ascii == 143) /* Bei Zeichen "143" */ getch(); /* Lesevorgang anhalten */ } fclose (ei_kan);
Das klappt auch alles wunderbar bis auf eine Sache: Das Programm hält bei Zahl 143 an gibt aber den ASCII-Code der Zahl 143 nicht aus. Das ganze sieht auf dem Bildschrim dann so aus:
... ... ... 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 & . U S ... # % [ * + ~ " x ' @
Gebe ich als if-Anweisung
if (ascii == 144) getch();
ein, sieht die Bildschirmausgabe so aus:
... ... ... 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 & . U S ... # % [ * + ~ " x ' @ 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
Wie bekomme ich es hin, dass die Zahl 143 einschließlich des ASCII-Codes auf dem Bildschirm erscheint bevor das Programm dann anhält????
-
Vermutlich mit nem fflush(stdout) vor dem getc
-
probier mal
if (ascii == 144)
-
versuchs mal so:
ascii = fgetc(ei_kan); /* Dateiinhalt zeichenweise lesen */ while (ascii != EOF) /* bis EOF erkannt ist */ { fputc (ascii, stdout); /* Zeichen in den Ausgabekanal */ if (ascii == 143) getch(); /* Bei Zeichen "143" Lesevorgang anhalten */ ascii = fgetc(ei_kan); /* Zeichen zeichenweise lesen */ } fclose (ei_kan);
-
Pferdefreund schrieb:
Vermutlich mit nem fflush(stdout) vor dem getc
Vielen Dank, funktioniert leider nicht.
-
Logikbestie schrieb:
probier mal
if (ascii == 144)Vielen Dank, das habe ich ebenfalls probiert (siehe meine Problembeschreibung). Funktioniert auch nicht.
-
mcr schrieb:
versuchs mal so:
ascii = fgetc(ei_kan); /* Dateiinhalt zeichenweise lesen */ while (ascii != EOF) /* bis EOF erkannt ist */ { fputc (ascii, stdout); /* Zeichen in den Ausgabekanal */ if (ascii == 143) getch(); /* Bei Zeichen "143" Lesevorgang anhalten */ ascii = fgetc(ei_kan); /* Zeichen zeichenweise lesen */ } fclose (ei_kan);
Juhuuuuuuu, perfekt, es funktioniert
DANKE, DANKE, DANKE!
IK66