txt-File zeilenweise auslesen liefert letzte Zeile doppelt



  • Hallo,

    kann mir jemand erklären, warum dieser Codeschnippsel mir die letzte Zeile im File doppelt liefert?

    while(!feof(RECO))
    {
    
    fgets(rdln, CHARLEN, RECO);
    
    if (rdln[0] == 'R')
    continue;
    
    printf("Durchlauf: %i\n%s\n", a, rdln);
    
    a++;
    }
    

    Eigentlich würde die Datei aus 2 Zeilen bestehen. Zeile 1 würge ich ab, da ich diese nicht benötige. Dann wird mir 2x Zeile 2 ausgespuckt. Was mach ich hier falsch?

    Gruss
    Holgie



  • du benutzt EOF falsch. das EOF-Flag wird gesetzt, wenn du versuchst, über das Ende der Datei hinauszulesen. Das heißt, nach dem lesen der letzten Zeile ist EOF noch nicht gesetzt, die Schleife wird also erneut durchlaufen. Den Rückgabewert von fgets, der jetzt NULL ist (bei diesem Lesen wird auch EOF gesetzt), ignorierst du dummerweise, und glaubst, dass das was vom letzten Schleifendurchlauf noch im Puffer steht, sei neu eingelesen worden.

    HTH


Anmelden zum Antworten