Pagina 1 din 1

Valoare zero la citire date din fisier cu feof si fgetc

Scris: Dum Dec 02, 2012
de patricia
Am o problema cu functia feof(), incerc sa citesc dintr-un fisier o succesiune de cifre, dar dupa ce le citeste pe toate , mai imi citeste si un zero care nu exista in fisier.
Nu inteleg de ce?

Cod: Selectaţi tot

while(!feof($f)){
    $aux=null;
    $aux=(int)fgetc($f);
    echo'<br/>'.$aux;
    if($aux<$minim)$minim=$aux;
    if($aux>$maxim)$maxim=$aux;
}

Valoare zero la citire date din fisier cu feof si fgetc

Scris: Lun Dec 03, 2012
de MarPlo
Conform manualului PHP, functia fgetc() : "Returns a string containing a single character read from the file pointed to by handle. Returns FALSE on EOF".
Adica returneaza False la sfarsit de fisier (EOF = End of File), care, cu (int) e transformat in zero (0).
Ca sa testezi, poti face asa:

Cod: Selectaţi tot

var_dump(fgetc($f));
Ultima afisare va fi: "bool(false)".

- Solutia: sa verifici daca fgetc() returneaza False. Asa:

Cod: Selectaţi tot

if(($aux = fgetc($f)) !== false) {
  echo '<br/>'. (int)$aux;
}