Witam,
Mam kod:
#include <fstream>
#include <cstdio>
int main() {
std::ofstream plik("dane.binary", std::ofstream::binary);
int *tab = new int[5];
for(unsigned int i=0; i<5; ++i)
tab[i] = i;
plik.write((char*)&tab, sizeof(tab));
plik.close();
plik.clear();
std::ifstream plik2("dane.binary", std::ifstream::binary);
int *tab2 = new int[5];
plik2.read((char*)&tab2,sizeof(tab2));
for(int i=0;i<5;++i)
printf("%d ",tab2[i]);
plik2.close();
return 0;
}
który poprawnie(?) zapisuje i odczytuje tablice w postaci binarnej. Jednak jeśli przeniosę kod odczytu do zupełnie innego programu, ten się wykrzacza przy wypisywaniu.
#include <fstream>
#include <cstdio>
int main() {
std::ifstream plik2("dane.binary", std::ifstream::binary);
int *tab2 = new int[5];
plik2.read((char*)&tab2,sizeof(tab2));
for(int i=0;i<5;++i)
printf("%d ",tab2[i]);
plik2.close();
return 0;
}
Jak widać kod jest kopią z programu pierwszego.
Co powoduje błąd?