¿Que tal entan?
Bueno... a ver como os explico. tengo una estructura en un archivo en C++ que quiero enviar a un fichero 3 veces(con datos diferentes). Hasta aquí todo ok.
Adjunto el código.
Código C++:
Ver original
#include <iostream> #include <fstream> using namespace std; struct Dados { char c; char frase[10]; int n; } dados; int main () { ofstream fin; fin.open ( "prova.dat", std::fstream::out | std::fstream::binary ); Dados d1 = {'a', "frase1", 64}; Dados d2 = {'b', "frase2", 65}; Dados d3 = {'c', "frase3", 66}; fin.write ( reinterpret_cast<const char*> ( &d1 ), sizeof ( dados ) ); fin.write ( reinterpret_cast<const char*> ( &d2 ), sizeof ( dados ) ); fin.write ( reinterpret_cast<const char*> ( &d3 ), sizeof ( dados ) ); fin.close(); return 0; }
El problema pasa por ejemplo a la hora de alterar esos datos. Mire ese otro ejemplo. ¿Debería alterar el primer registro no? Al menos eso es lo que quiero.
Vea el código que altera en C++.
Código C++:
Ver original
#include <iostream> #include <fstream> using namespace std; struct Dados { char c; char frase[10]; int n; } dados; int main () { ofstream fin; fin.open ( "prova.dat", std::fstream::out | std::fstream::binary ); Dados d4 = {'x', "mudado", 97}; fin.write ( (char *)&d4, sizeof ( dados ) ); fin.close(); return 0; }
En ese caso lo que pasa es que se borra todo el contenido del fichero y se graba 'x', "mudado", 97. Pero con el "mismo" código en C todo funciona "bien", no sé cual es la causa.
Aquí el "mismo" código en C. Pongo mismo entre "" porque no sé que hago mal.
Código C:
Ver original
¿Alguien sabe decir que es lo que pasa porque con uno puedo y con otro no?
Gracias de antemano.