[C con Clase] Leer fichero de texto con "formato".

Jorge Vega Sanchez memmaker650 en gmail.com
Jue Mayo 6 19:03:44 CEST 2010


Vale, muchísimas gracias. ya funciona todo perfectamente siguiendo tus  
sabios consejos

Muchas gracias.

On 06/05/2010, at 15:13, Steven Davidson wrote:

> Hola Jorge,
>
> 2010/5/6 Jorge Vega Sanchez <memmaker650 en gmail.com>
> Bueno todo funciona bien como coentaba antes pero encuentro un  
> error. Con getline lo hace todo correctamente y funciona  
> perfectamente.
> Pero si lo hago con read me imprime más caracteres que los que hay  
> en el fichero que es lo que no entiendo. Porque se supone que cuando  
> termina el fichero ya no debería imprimir más.
> adjunto el fichero de lectura y el código anterior modificado para  
> funcionar con read(char, length)
>
> Mensaje obtenido:
> La escritura se esta haciendo realmente bien.
>  A ver si va todo bien y puedo echar una partidilla al God of War.Hola
> Hola
> Hola
> Hola
> Hola minuto.
> .
>
>
> La ultima linea con el punto no debería salir. Esta otra versión me  
> gustaría usarla para detectar unas cadenas de caracteres  
> características en ficheros más largos.
>
>
>
> Sin ver el código fuente que has escrito, nos es difícil especificar  
> el problema. De todos modos, creo saber cuál es el problema. Sólo  
> porque el cursor llegue al final del fichero no implica que la  
> función miembro 'eof()' lo detecte. Esta función meramente consulta  
> el banderín interno del canal acerca del estado de tal "evento". Es  
> decir, 'eof()' retorna el estado del fin de fichero, pero no  
> consulta el cursor del fichero. Las funciones de lectura activan  
> este banderín del fin de fichero.
>
> Esto implica que si haces una lectura completa, pero el cursor está  
> justo al final del fichero, 'eof()' retornará 'false'. Al hacer una  
> siguiente lectura, esta operación se encontrará con el cursor del  
> fin de fichero y activará el banderín de este estado. Por supuesto,  
> no se leerán caracteres y no se alterará el contenido de la cadena.  
> Por lo tanto, la cadena contendrá los caracteres de la lectura  
> anterior. Por esta razón, aparece una lectura repetida.
>
> Mi consejo es que leas primero y luego consultes si hemos llegado al  
> final del fichero. Por ejemplo,
>
> do
> {
>   f.read( szCadena, 1024 );
>   ...
> } while( !f.eof() );
>
> o incluso,
>
> f.read( szCadena, 1024 );
> ...
> while( !f.eof() )
> {
>   f.read( szCadena, 1024 );
>   ...
> }
>
>
> Espero que esto te sirva.
>
> Steven
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100506/539bffec/attachment.html>


Más información sobre la lista de distribución Cconclase