Mit while-Schleife Zeichen einlesen



  • Hallo, habe folgendes Problem:
    #include <stdio.h>

    #define BUF 13

    void main()
    {
    FILE *pfile;
    char line[BUF];
    char dateiname[62];
    unsigned long index1=1;

    printf ("Bitte geben Sie den Dateipfad der zu Oeffnenden Datei ein:\n");
    scanf ("%61s", dateiname);

    pfile = fopen (dateiname, "r");

    while (fgets (line, BUF, pfile) != NULL)
    {
    printf("\nZeile %ld wird gelesen! - %s", index1, line);
    index1++;

    }
    system("PAUSE");
    }

    Wenn ich das Programm nun zum ausführen bringe erscheint im DOS Fenster folgendes:
    ...
    Zeile 1 wird gelesen! - 123456789012
    Zeile 2 wird gelesen! -

    Zeile 3 wird gelesen! - 123456789012
    Zeile 4 wird gelesen! -

    Zeile 5 wird gelesen! - 123456789012
    ...
    Warum zeigt es 5 Zeilen an obwohl ich nur 3 in die .txt Datei geschriebe habe???
    Bitte um Hilfe!



  • Forum ANSI C wäre passender.

    fgets liest gemäß Standard maximal n-1==12 Zeichen ein oder endet beim vorigen Auftreten von '\n'. Das an 13. Stelle stehende \r\n bzw. \n in deiner Datei wird durch das nächste fgets gelesen und anschließend auch ausgegeben, wie man sieht.

    int main() ist Standard, void main() nicht.


Anmelden zum Antworten