[C con Clase] FSTREAMS, Estoy olvidado en algunos conceptos y uso

Salvador Pozo salvador en conclase.net
Vie Abr 27 19:26:18 CEST 2007


El pasado 2007-04-27 16:51:26, Listero Absoluto escribió:
 
Hola:

LA> Buenas.
LA> Hace rato que no uso esta clase y luego de mi "tour" por varios
LA> lenguajes... estoy muy olvidado de como usarla y tengo un par de
LA> preguntas:

Veamos.

LA> Si defino una estructura, por ejemplo:
LA> typedef
LA> struct SData
LA> {
LA>     int x;
LA>     char c[50];
LA>     float y;
LA> };

En C++ no es necesario usar typedef para definir tipos a partir de estructuras, puedes prescindir de esa palabra.
LA> ...
LA>     cout << "WRITE = " << fs.good() << endl; // Me imprime 1
LA>     fs.read((char*)&d2,  sizeof(d2));
LA>     cout << "READ = " << fs.good() << endl; // Me imprime 0 !!!!
LA>     // Al fallar la operacion de lectura, la siguiente linea imprime basura
LA>     cout << "Data : (" << d2.x << ", " << d2.c << ", " << d2.y << ")" << 
LA>...
LA> Como verán el programa solo sirve para refrescarme la memoria, sin
LA> embargo no doy con el error. 

El error es simple.

Después de la operación de escritura, el cursor o puntero del fichero queda situado al final del fichero, por lo que la operación de lectura fallará, ya que no hay nada que leer.

Para que funcione tendrás que cambiar la posición del cursor, usando por ejemplo, el método "seekg".

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


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