Hola compañeros jajaj, no os voy a dar descanso
¿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#include <stdio.h>
typedef struct Dados {
char c;
char frase[10];
int n;
} dados;
int main() {
FILE *file;
file
= fopen ( "prova.dat", "rb+" );
dados d4 = {'x', "mudado", 97};
fwrite ( (char *)&d4
, 1, sizeof(dados
), file
);
return 0;
}
¿Alguien sabe decir que es lo que pasa porque con uno puedo y con otro no?
Gracias de antemano.