Bestimmte Zeile einer .txt datei auslesen (C)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo ultrabrot123,

so, wie du dir das vielleicht vorstellst, ist das nicht ganz möglich. Du musst vom Anfang weg Zeile für Zeile auslesen und immer prüfen, ob das dann die richtige Zeile ist (oder die ganze Datei auf einmal einlesen).

(Das ist nicht nur bei Java so, sondern generell bei jeder Programmiersprache.)

Und bevor du mehrmals die komplette Datei durchsuchst, besser einmal in ein Array etc. einlesen.

Eine Verschnellerung wäre nur möglich, wenn jede Zeile gleich viel Byte hat. Da Namen/Berufsbezeichnungen etc. aber verschieden lang sind.

Mit indexOf und substring könnte man die einzelnen (;-getrennten) Teile ermitteln. Wenn man alle Teile braucht ist split schneller.

Aber, je nach Programm, wäre es vielleicht am sinnvollsten, die Zeilen schon beim Einlesen zu trennen.

Eine Zeile einlesen, mit split an den ; auftrennen.

Schau hier mal nach:

https://www.tutorials.de/threads/mit-java-eine-bestimmte-zeile-einer-txt-datei-auslesen.385680/

Ist sehr gut beschrieben und leicht zu analysieren.

Mfg

SimmFire

DoTheBounce  18.12.2014, 10:50

Die Frage war aber C und nicht Java ;)

Trotzdem bleibt die Kernaussage die gleiche: Du kannst nicht direkt sagen, erst ab Zeile x einlesen. C bietet die Funktion "fseek", mit der man an eine bestimmte Stelle der Datei springen kann. Dazu braucht man aber den Offset in Bytes. Und damit kann man nur an einen bestimmten Zeilenanfang springen, wenn man die Zeilenlängen davor bereits weiß

0

Der Code schaut natürlich so aus:

include include define LAENGE 50

int main()

{

FILE *f;

char Text[LAENGE];

char Dateiname[] = "C:\c\Woerter.txt";

f = fopen(Dateiname,"r");

if(f==NULL)

{

printf("Fehler beim Oeffnen! Bitte ueberpruefe deinen Pfad!\n");

}

printf("\nDas ist der Text der in der Datei ( \"%s\" ) steht:\n\n",Dateiname);

while( fgets(Text, sizeof(Text), f) !=0 )

fputs(Text, stdout);

printf("\n");

system("PAUSE");

return 0; }

Danke :)