Text aus Datei auswerten && Wii Timingproblem

Crosaider

Grünschnabel
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:
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
 
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:
C++:
int z1, z2, z3;
char wort[30];
...
fscanf(txt, ": %d %d %d %s", &z1, &z2, &z3, wort);
Mit Fehlerüberprüfung:
C++:
if(4 != fscanf(txt, ": %d %d %d %s", &z1, &z2, &z3, wort))
{
    //Fehler
}

Gruß
 
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?
 
Zurück