[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