Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Datei auslesen

rambazamba1 / 14 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
jdeen rambazamba1 „Datei auslesen“
Optionen

Ich bin mir ja nicht sicher, aber ich würde es mal mit einem "endwhile" versuchen.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
rambazamba1 jdeen „Ich bin mir ja nicht sicher, aber ich würde es mal mit einem endwhile versuchen.“
Optionen

Müsste die Schleife nicht so schon das EOF Zeichen erkennen und weiter springen?

bei Antwort benachrichtigen
jdeen rambazamba1 „Müsste die Schleife nicht so schon das EOF Zeichen erkennen und weiter springen?“
Optionen

Keine Ahnung.
In php muß ein "end" rein. Probier's aus. ;)

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
jdeen rambazamba1 „Müsste die Schleife nicht so schon das EOF Zeichen erkennen und weiter springen?“
Optionen

Woher soll das prog wissen, wie weit der while-befehl ausgeführt werden soll ?

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
rambazamba1 jdeen „Woher soll das prog wissen, wie weit der while-befehl ausgeführt werden soll ?“
Optionen

... bis es das EOF Zeichen aus der Datei liest.

bei Antwort benachrichtigen
jdeen rambazamba1 „... bis es das EOF Zeichen aus der Datei liest.“
Optionen

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 ?

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
jdeen Nachtrag zu: „Sorry ! Aber ich habe ja nicht gefragt wie lange, sondern wie weit der Befehl...“
Optionen

Hat sich wohl erübrigt ;)

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
rambazamba1 jdeen „Hat sich wohl erübrigt “
Optionen

Trotzdem Danke.
Die While-Schleife führt übrigens solange keine geschweiften Klammern gesetzt sind, nur eine Anweisung aus.

bei Antwort benachrichtigen
jdeen rambazamba1 „Trotzdem Danke. Die While-Schleife führt übrigens solange keine geschweiften...“
Optionen

Richtig ! Jetzt seh ich's auch : Keine geschweifte Klammer.
Danke.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
mr.escape jdeen „Sorry ! Aber ich habe ja nicht gefragt wie lange, sondern wie weit der Befehl...“
Optionen

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

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
mr.escape rambazamba1 „Datei auslesen“
Optionen

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

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
rambazamba1 mr.escape „Versuche mal statt char puffer einfach int puffer zu nehmen. Also: include...“
Optionen

Super, hat funktioniert. Habe gerade rausgefunden, dass auch "signed char puffer" funktionieren würde.
Vielen Dank für die Hilfe!

bei Antwort benachrichtigen
mr.escape rambazamba1 „Super, hat funktioniert. Habe gerade rausgefunden, dass auch signed char puffer...“
Optionen

Das könnte aber bei zeichen über 127 (besonders bei numero 255) probleme geben, muss aber nicht.

mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
REPI rambazamba1 „Datei auslesen“
Optionen

#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 !

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen