#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
class operacja
{
public:
fstream plik;
int nrlinijki;
int *a;
operacja(string sciezka)
{
plik.open(sciezka.c_str(), ios::in | ios::out | ios::trunc | ios::binary);
nrlinijki = 0;
}
~operacja()
{
plik.close();
}
void zapis(int wartosc);
int *odczyt(int wartosc);
};
void operacja::zapis(int wartosc)
{
plik.seekp(nrlinijki*sizeof(int));
plik.write((char*)&wartosc, sizeof(int));
cout << "Zapisano" << endl;
nrlinijki++;
}
int *operacja::odczyt(int wartosc)
{
cout << "TU" << endl;
plik.seekg(wartosc*sizeof(int));
cout << "powskazaniu" << endl;
plik.read((char*)&a, sizeof(int));
cout << "Odczytano" << endl;
return a;
}
int main()
{
string olek("C:\\Users\\Fryderyk\\Desktop\\plik.tmp");
operacja *plik;
plik = new operacja(olek);
int i;
cin >> i;
plik->zapis(i);
int *x = plik->odczyt(0);
cout << x << endl;
delete plik;
system("PAUSE");
return 0;
}
ok, mam taki kod źródłowy, testowałem w devie i visualu.
dokładnie chodzi mi o odczyt, bo zapis wydaje się być prawidłowy.
Na ekranie pojawia mi się liczba którą podam podczas zapisu, lecz w zapisie 16-nastkowym + kilka zer z przodu, próbowałem to zmienić manipulatorem "dec", ale nic to nie dało.
Mógłby mi ktoś poradzić gdzie jest problem, co zrobiłem źle?