Hallo zusammen,
habe ein kleines Problem mit folgendem Quelltext.
Es soll eine Datei ausgelesen und auf dem Bildschirm ausgegeben werden.
Das funktioniert auch soweit nur bleibt das Programm in der while-Schleife hängen.
Weiß jemand warum?
#include
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Ich bin mir ja nicht sicher, aber ich würde es mal mit einem "endwhile" versuchen.
Müsste die Schleife nicht so schon das EOF Zeichen erkennen und weiter springen?
Keine Ahnung.
In php muß ein "end" rein. Probier's aus. ;)
Woher soll das prog wissen, wie weit der while-befehl ausgeführt werden soll ?
... bis es das EOF Zeichen aus der Datei liest.
Sorry ! Aber ich habe ja nicht gefragt wie lange, sondern wie weit der Befehl ausgeführt werden soll.
Wie lange ist OK : bis EOF
Wie weit ? Bis putc(puffer, stdout);
oder bis c=getch();
oder bis fclose(datei); ???
Du weißt, was ich meine ?
Hat sich wohl erübrigt ;)
Trotzdem Danke.
Die While-Schleife führt übrigens solange keine geschweiften Klammern gesetzt sind, nur eine Anweisung aus.
Richtig ! Jetzt seh ich's auch : Keine geschweifte Klammer.
Danke.
Es ist doch klar. Die while schleife gilt für das putc.
Keine geschweifte klammer -> also der nächste befehl bis zum semikolon.
mr.escape
Versuche mal statt "char puffer" einfach "int puffer" zu nehmen. Also:
#include <stdio.h>
#include <stdlib.h>
void main (){
FILE *datei;
int puffer;
char c;
printf("\7");
if ((datei = fopen("c:\\test.txt", "r")) == NULL){
printf("\nDatei nicht gefunden!!!\n");
exit(1);
} else
while((puffer=fgetc(datei)) != EOF)
putc(puffer, stdout);
c=getch();
fclose(datei);
}
mr.escape
Super, hat funktioniert. Habe gerade rausgefunden, dass auch "signed char puffer" funktionieren würde.
Vielen Dank für die Hilfe!
Das könnte aber bei zeichen über 127 (besonders bei numero 255) probleme geben, muss aber nicht.
mr.escape
#include
#include
void main ()
{
FILE *datei;
char puffer, c;
printf("\7");
if ((datei = fopen("c:\\test.txt", "r")) == NULL)
{printf("\nDatei nicht gefunden!!!\n");
exit(1);}
else
puffer=fgetc(datei);
while(puffer != EOF)
{
putc(puffer, stdout);
puffer=fgetc(datei);
}
c=getch();
fclose(datei);
}
Versuch es mal so !