Sven Rautenberg: fgets Problem wenn Datei 0 enthält

Beitrag lesen

Moin!

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.

Und auch ohne wird nur ein Zeichen weniger gelesen, als beauftragt:

<?php  ###  fread.php ###

define ('EL',"<br />\r\n");

$fh = fopen (__FILE__,'rb');
    $content = fread($fh, 0);

$content = fgets($fh,10);
    echo "Länge des Content: ". strlen($content) . EL;

fclose($fh);
?>

Ergebnis bei mir (Kommandozeile):

Warning: fread(): Length parameter must be greater than 0 in /home/sven/test/fread.php on line 6
Länge des Content: 9<br />

Wo ist da das Problem?

fread() akzeptiert (mit sinnvoller Fehlermeldung zurückgewiesen) nicht 0 als Wert der Anzahl zu lesender Bytes.

fgets() liest maximal (Param-1) Bytes aus der Quelle aus - dokumentiert im Handbuch.

- Sven Rautenberg

--
"Love your nation - respect the others."