Doppelte ausgabe
-
{ system ("Cls"); char buffer [46]; datei = fopen ("C:\\Dokumente und Einstellungen\\mamar\\Desktop\\Adressverwaltung\\Adressen.txt", "r"); while (feof(datei) == FALSE) { fgets (buffer, 46,datei); printf ("%s", buffer); } getchar(); fclose(datei); }
Bei dieser Funktion gibt es mir, die letzte Zeile der Datei "Adressen.txt" doppelt aus.
Ich weiss nicht wieso....
Könntet Ihr mir eventuell helfen??mfg 08mmarte
-
Ein Blick in die Man-Pages zu fgets könnte Licht ins Dunkel bringen:
gets() und fgets() geben s zurück bei Erfolg, und NULL im Fehlerfall oder wenn Dateiende auftritt ohne dass Zeichen gelesen wurden.
Du könntest den Rückgabe-Wert von fgets abfragen, bevor du etwas ausgibts.
Anscheinend ist feof() = 0, aber fgets() liefert keine Zeichen mehr.Dies ist eine Möglichkeit, ob sie nun bei dir zutrifft, k.a.
while (!feof(datei)) { if (fgets (buffer, 46,datei)) printf ("%s", buffer); }
Gruß mcr
-
while ( fgets( buffer, 46, datei)) printf( "%s", buffer);
wird funktionieren. Die 46 Zeichen enthalten \r\n, da ist noch so
ein kleiner Fallstrick. Du kannst den Puffer ruhig etwas großzügiger
dimensionieren, der PC hat bestimmt jede Menge Speicher ...
-
Danke...