Einlesen von mehrzeiligen Daten in stdin: Letzte Zeile doppelt
-
Hallo!
Ich habe hier ein seltsames Phänomen, das ich mir nicht erklären kann. Es geht um folgendes kleines Programm:
#include <stdio.h> #include <string.h> #define MAX_LENGTH 1000 int main() {[cpp] char input[MAX_LENGTH]; while (!feof(stdin)) { fgets(input, sizeof(input), stdin); fputs(input, stdout); } }
Als Eingabe dient eine mehrzeilige Datei, die mittels dem "<"-Operator umgeleitet wird. Ich würde nun erwarten, dass die Datei Zeile für Zeile ausgegeben werden - was aber passiert ist, dass die letzte Zeile doppelt ausgegeben wird.
Hat da jemand eine Erklärung? Danke schonmal im Voraus!
-
Borland/Turbo C++ Help schrieb:
Bei Dateiende oder Fehler liefert fgets 0
-
Ah, auf so ein kleines Detail hab ich nicht geachtet.
Besten Dank, so gehts:
#include <stdio.h> #include <string.h> #define MAX_LENGTH 1000 int main() {[cpp] char input[MAX_LENGTH]; while (fgets(input, sizeof(input), stdin)) { fputs(input, stdout); } }