Hello,
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?
Was interessiert mich eine Puffergröße oder C, wenn ich PHP programmieren will?
Wenn ich 10 Bytes anfordere erwarte ich als PHP-Programmierer auch, 10 Bytes zu erhalten, wenn genug da sind und sonst eine Fehlermeldung oder eben weniger und ein eof()== true.
Und red nicht um den Brei rum, das ist einfach schlampig impelmentiert!
Das war aber schon immer so und ist auch gut dokumentiert.
Und weil es immer so war, muss es auch immer so bleiben?
Vermutlich schon. Die alten DOS-Fehler sind in Windows ja auch oft noch zu finden.
Kann sein, dass Dir das Verhalten nicht gefällt, aber deswegen ist es doch hirnrissig, von "Problemen" mit der Funktion zu sprechen.
Es ist unverschämt von Dir, meine Ausage als "hirnrissig" zu bezeichnen.
Es ist aber durchaus legitim, wenn ich auf mögliche Probleme mit der Funktion hinweise, da sie nachvollziehbar vielen PHP-Programmierern genau an dieser Stelle Schwierigkeiten bereitet.
"Problem" kann auch bedeuteten, dass man nach dem natürlichen Menschenverstand, den freilich nicht mehr jeder hat [1], ein anderes Verhalten der Funktionen erwarten würde.
Mit welchem Recht Du mir nun meine Kritik verbieten willst, oder mich dafür als "hirnrissig" darstellen willst, leuchtet mir nicht ein. Du darfst Dich aber dafür entschuldigen.
[1] Je tiefer man in ein Thema eindringt, desto schwieriger wird es, dieses noch unverbildet und unbeeinflusst von Konventionen zu unlogischen Rahmenbedingugnen zu beurteilen.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg