Hallo,
Es werden nicht soviele Nutz-Zeichen gelesen, wie Du in Auftrag gibst, sondern ein oder zwei weniger.
Das steht sogar im Manual.
Das Zeilenende-Zeichen rechne ich hier nicht den Nutzzeichen zu.
Huh? fgets() liest halt ein Zeichen weniger ein, weil Du bei fgets() die Puffergröße (inkl. 0-Byte) angibst und nicht die String-Länge - siehe auch mein Beispiel, wo ich 6 statt 5 übergebe. Das gleiche passiet aber auch in C. Wenn die Funktion nun schon so heißt, wie ihr C-Pendant: Warum sollte sie sich dann nicht auch so verhalten?
Das war aber schon immer so und ist auch gut dokumentiert. Kann sein, dass Dir das Verhalten nicht gefällt, aber deswegen ist es doch hirnrissig, von "Problemen" mit der Funktion zu sprechen. Siehe Svens Anmerkung: Date.getMonth() ist in Javascript auch sehr seltsam definiert, man mag sich über die Definition aufregen, aber die Funktion selbst ist bezüglich der Definition in allen Browsern korrekt implementiert. "Problem" dagegen impliziert, dass es Bugs gibt, was absolut nicht der Fall ist.
Viele Grüße,
Christian