Textdatei einlesen



  • Hallo Zusammen

    Ich habe ein kleines Probelm mit einem Teil meines Programmes.
    Ich möchte aus einer Text Datei die eine Fortlaufende Nummer enthält, die letzte Nummer auslesen. Die Nummern sind jeweils durch ein /n getrennt.

    11
    12
    13
    14
    15

    Meine Frage ist nun wie kommen ich am Besten zu der letzten Nummer?
    Git es da ein Befehl, oder ist es am Besten wenn ich mit fseek ans Ende springe und nochmals mit fseek um sizeof(int) zurück gehe ?

    Danke



  • Hi,

    nun eine Möglichkeit wäre einfach die ganze Datei durchzulaufen
    und dann einfach den letzten wert auszugeben 🙂

    #include <stdio.h>
    
    int main(){
    
        FILE *lesen = fopen( "test.txt", "r" );
        int i_zahl;
    
        if( !lesen )
        printf( "Fehler beim Laden der Datei" );
    
        while( !feof(lesen) )
        fscanf( lesen, "%i", &i_zahl );
    
        printf( "%i", i_zahl );
    
        fclose(lesen);
    
     fflush( stdin );
     getchar();
     return 0;
    }
    

    schönen Tag noch



  • Also, unter einer fortlaufenden Nummer in einer Datei verstehe ich eine fortlaufende Nummer, d.h. es ist auch gleichzeitig die erste und die letzte, also die einzige. Nagut, ein bisschen Klugscheißen muss ja mal sein, ne. 😃

    Ansonsten glaube ich zu verstehen, was der werte Threadstarter zu programmieren beabsichtigt und mein Tipp ist:

    Bei einer Mütze voll Zahlen, würde ich es wie mein Vorposter machen. Bei ganz dolle viel Zahlen würde ich mir wohlmöglich eine andere Speichermethode überlegen, aber wenns garnicht anders ginge, den Dateizeiger ans Ende der Datei hüpfen lassen und dann Byteweise rückwärts gehen bis ein '\n' und eine folgende Zahl eingelesen wurde, weil die Anzahl der Bytes einer Zahl in einer Textdatei auch hier variabel sein kann.

    Gruß,
    B.B.



  • Danke für eure Hilfe.

    Habe es jetzt mit einem String gemacht, da man die Datei dann auch von Hand "lesen" und bearbeiten kann.

    Habe es so gelöst

    while((fgets(caString,sizeof(caString),fp))!=NULL);
    

Anmelden zum Antworten