-
Hallo @ all
Ich habe folgendes problem. Ich habe eine Textdatei, in welcher ganze viele Reihen ca soetwas steht:
: 0 3 14 Bla
Nun möchte ich gerne jedes einzelne "Wort" außer den Doppelpunkt in einer Variable speichern. Die Zahlen können sich auch bis in die 1000 erstrecken - haben also unterschiedliche Längen und auch das Wort kann natürlich unterschiedlich lang sein. Alles zusammen ist aber nie Länger als 30 Zeichen. Habe zu Testzwecken erstmal so was versucht:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
int main() { char start[4] = "", laenge[4] = ""; FILE *txt = fopen("text.txt", "rb"); char *Data; int iL, iLeerzeichen; fgets(Data, 25, txt); iLeerzeichen = 0; for(iL=2; iL < 25; iL++) { if (iLeerzeichen == 3) { break; } if (Data[iL] == ' ') { iLeerzeichen += 1; } else { switch (iLeerzeichen) { case 0: strcat(start, Data[iL]); // String anhängen break; case 1: strcat(laenge, Data[iL]); // String anhängen break; case 2: // String anhängen break; } } } printf("Start: %s\nLaenge: %s\n", start, laenge); return 0; }
Das war ein Versuch die ersten beiden Zahlen auszulesen aber der ist leider schon groß gescheitert
Wo ist der Fehler bzw. kann man das noch optimieren damit es möglichst schnell durchläuft. Hierbei kommt es extrem auf schnelligkeit an.
Ich möchte zum Schluss halt 4 Variablen (3 Integer, 1 String) haben. Kann sich jemand vllt mal den Code angucken und sagen was ich falsch gemacht habe? Das ganze muss leider in reihnem C (kein C++) sein. Ich hoffe ihr könnt mir helfen.
Viele Grüße
Crosaider
-
Hi
sind immer genau drei Zahlen vor dem Wort?
Kann das "Wort" auch ein Satz mit Leerzeichen sein?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Ja es sind immer genau 3 Zahlen vor dem Wort. Das Wort ist aber nie ein Satz - es besteht einfach immer nur aus einem Wort - keine Leerzeichen.
Der Doppelpunkt am Anfang jeder Zeile soll gar nicht beachtet werden...
-
Verwende fscanf.
Mit einem Befehl die ganze Zeile einlesen:
Mit Fehlerüberprüfung:Code cpp:1 2 3 4
int z1, z2, z3; char wort[30]; ... fscanf(txt, ": %d %d %d %s", &z1, &z2, &z3, wort);
Code cpp:1 2 3 4
if(4 != fscanf(txt, ": %d %d %d %s", &z1, &z2, &z3, wort)) { //Fehler }
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
super thx das funktioniert wunderbar

Allerdings wird bei dieser Methode der File-Deskriptor nicht weitergesetzt - deswegen kann ich nicht einfach so (mit dem gleichen Aufruf) auf die zweite zeile zugreifen. Hast dafür auch noch eine Lösung?
-
Hm, was ist denn mit
Code cpp:1
fscanf(txt, ": %d %d %d %s\n", &z1, &z2, &z3, wort)
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Kommt leider das gleiche bei rum...
-
Warum verwendest du bei fopen "rb"?
Was ist mit "r"?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Habs in der Schule immer mit "rb" gelernt. Aber auch wenn ichs in "r" ändere funktioniert es leider nicht.
-
Was passiert genau?
Datei?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Also ich habs so gemacht:
Code :1 2 3 4 5
fscanf(txt, ": %d %d %d %s", &z1, &z2, &z3, wort); printf("Start: %d\nLaenge: %d\nTonhoehe: %d\nText: %s\n\n", z1, z2, z3, wort); fscanf(txt, ": %d %d %d %s", &z1, &z2, &z3, wort); printf("Start: %d\nLaenge: %d\nTonhoehe: %d\nText: %s", z1, z2, z3, wort);
und es kommt beide Male zur gleichen ausgabe...
-
Wie sind die ersten Zeilen der Datei?
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Ersten Zeilen der Datei sehen so aus:
: 0 3 14 John
: 8 3 11 Peter
: 16 2 14 Hanz
: 20 2 14 Bernd
: 24 3 11 Fritz
-------EDIT-------
Habs jetzt hinbekommen: Windows macht am Ende immer "/r/n" - wenn ich das ans Ende von fscanf schreibe gehts
Dankeschön nochmal!
Geändert von Crosaider (05.11.11 um 02:00 Uhr)
-
Grad selbst getestet, bei mir funktionierts, wenn ich wie schon gesagt
\n im fscanf reinnehme.
Das hast du also probiert, und hat nicht funktioniert?
Betriebssystem?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Also es geht jetzt wie oben gesagt thx

Eine Sache hätte ich aber noch wenn in der Datei steht:
: 20 2 14 Bernd (zwischen 14 und Bernd sind 2 Leerzeichen)
soll er nur das erste Leerzeichen als Trennung ansehen und das zweite mit in den String nehmen. Wäre halt das was du am Anfang gefragt hast ob auch Leerzeichen drin vorkommen - sry nicht dran gedacht. Ist das sehr viel anders?
Ähnliche Themen
-
[AS3] XML Datei auswerten
Von SCIPIO-AEMILIANUS im Forum Flash PlattformAntworten: 0Letzter Beitrag: 03.01.10, 17:08 -
log (*.txt)datei auswerten
Von Wormz im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 09.08.07, 20:12 -
Datei auswerten (beschränkte Möglichkeiten)
Von Razorhawk im Forum C/C++Antworten: 0Letzter Beitrag: 28.09.05, 11:08 -
PHP Tabellendaten auswerten und in Datei exportieren
Von patges im Forum PHPAntworten: 3Letzter Beitrag: 17.05.05, 11:26 -
Log-Datei auswerten
Von poolpage im Forum PHPAntworten: 4Letzter Beitrag: 11.08.02, 14:41



2Danke

Zitieren

Login






