Textdatei einlesen
-
Hänge gerade an einen kleinen Problemchen.
Ich will eine Textdatei auslesen, dies mache ich Zeichenweise.
Nun will ich aber wenn ein bestimmtes Zeichen eingelesen wird, ungeachtet davon ob noch mehr in dieser Zeile steht, mit der nächsten Zeile fortfahren, falls die Datei noch nicht zu ende ist.Wie kann man das erreichen?
mfg rendner
-
Naja, sobald das bestimmte Zeichen kommt, einfach in einer while-Schleife weiterlesen bis du auf \n oder das Datei zu Ende stößt.
while (((c = fgetc(file)) != EOF) && (c != '\n');
-
Das is ja das wass ich nicht will.
Da das eine grössere Textdatei ist und ich nicht alles brauche, hatte ich mir gedacht man kann sich das sparen, ist ja sinnlose Zeit die da für nix flötten geht.mfg rendner
-
Oder auch nicht, andere Funktionen müssen auch prüfen, ob es sich um ein '\n' oder EOF handelt.
char *fgets(char *s, int size, FILE *stream) fgets(3)
Diese Funktion liest aus einen file, size-viele Zeichen oder bis zum Ende einer Zeile und gibt NULL zurück, wenn EOF kommt. Weiß jetzt nicht ob sie für deine Anwendung verwendbar ist, aber denk mal schon.
-
@ imhotep:
Das habe ich mir dann auch gedacht das, ich den Text Zeilenweise einlese und dann gucke ob in dieser Zeile das "gesuchte" Zeichen vorhanden ist.
Danke trotzdem.
mfg rendner (Sonntagsprogrammierer)
-
#include <stdio.h> // Funktion zum Lesen eines einzelnen Zeichens // unter Beruecksichtigung der Einschraenkungen int rdch( FILE* fp, int ctrl_ch ) { // "ctrl_ch" ist das Abbruchzeichen for (;;) { int c = getc( fp ); if ( c == '\r' ) continue; // '\r' generell ueberlesen, falls vorhanden else if ( c == ctrl_ch ) { // Abbruchzeichen? // Abbruchzeichen gefunden: bis zum Zeilenende lesen. do { c = getc( fp ); } while ( c != '\n' && c != EOF ); // in "c" steht jetzt entweder '\n' oder EOF. } return c; // Zeichen zurueckgeben } }