Foros del Web » Programando para Internet » PHP »

problema con feof

Estas en el tema de problema con feof en el foro de PHP en Foros del Web. Saludos. Me estoy quedando flipado con la función feof. He creado un fichero llamado mierda.txt y he metido el siguiente contenido 01234567890123456789012345 asegurandome que no ...
  #1 (permalink)  
Antiguo 16/03/2010, 15:24
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 9 años, 8 meses
Puntos: 0
problema con feof

Saludos. Me estoy quedando flipado con la función feof.

He creado un fichero llamado mierda.txt y he metido el siguiente contenido
01234567890123456789012345
asegurandome que no haya espacios en blanco ni tabulaciones al final.
Como podeis ver, el fichero contiene tan sólo 25 caracteres.

El código que me falla es éste:
fseek($id_fichero,50);

if(feof($id_fichero))
{
print ftell($id_fichero);
echo " <B>FIN FICHERO.</B><P>";
}
else
{
print ftell($id_fichero);
echo " <B>Aún no se ha alcanzado el fin de fichero.</B><P>";
}


$id_fichero hace referencia a mierda.txt. Meta lo que meta en fseek, ya sea 10, 20, 50 o 3000, jamás entiende que se haya alcanzado el final de fichero.

Sabeis que ostias pasa?
  #2 (permalink)  
Antiguo 16/03/2010, 15:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Tema movido desde PHP orientado a objetos a PHP

Si ves el Manual de PHP claramente dice esto:
Código:
Return Values

Upon success, returns 0; otherwise, returns -1. Note that seeking past EOF is not considered an error.
Así que el puntero se queda donde esta, y feof no te va a decir que esta en el fin del archivo.

Saludos.
  #3 (permalink)  
Antiguo 16/03/2010, 16:05
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: problema con feof

Acabo de ver que si hago un fgetc en la posición 26 se alcanza el fin de fichero.

Era lo que faltaba, leer algo para que se activara la marca de eof.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:22.