Sven Rautenberg: daten einlesen

Beitrag lesen

Moin!

Schade das fgets nur den Zeilenumbruch als Seperator kennt. Da ist Perl klar im Vorteil ;-). Mit dieser C-Style Funktion kann man sich das aber selber basteln:

Kann man, aber will man nicht - weil es ein wahnsinniges Verbraten von Rechenzeit darstellt, aus einer angedroht gigabytegroßen Datei die Zeichen einzeln mit fgetc() einzulesen. Das ist einfach nur ineffizient.

Abgesehen davon:

function getline( $fp, $delim )

{
    $result = "";
    while( !feof( $fp ) )
    {
        $tmp = fgetc( $fp );
        if( $tmp == $delim )
            return $result;
        $result .= $tmp;
    }
    return $result;
}

  
Wenn der angenommene Delimitier nicht auftritt, retourniert diese Funktion, nachdem sie ihn zeichenweise im Speicher akkumuliert hat, den gesamten Inhalt der Datei. Das kann zuviel sein. Die Einschränkung bei fread(), nur maximal 8 KB Daten einzulesen, hat schon so seinen Sinn.  
  
 - Sven Rautenberg