Mozda moze i ovako nije bas elegantno ali posluzi:
Code:
void deleteLast()
{
char temp[] = "temp.dat" ; // privremena datoteka
int i; // za petlje
// 1. Otvori datoteku i prebroj slgove
int brs = BrojSlogova("DataNEW.dat"); // nasa funkcija koja u binarnom fajlu broji zapise
ifstream file; // baza za citanje
ofstream tempfile; // temp za pisanje
Data data;
int data_sz = sizeof(Data); // "Data" korisnicki definisana struktura ili klasa
file.open("DataNEW.dat", ios::binary); // to je recimo baza podataka
// 2. Upisi N-1 slog u drugu datoteku , zatvori sve datoteke
tempfile.open(temp, ios::binary|ios::app );
for( i = 0;i< brs-1; i++)
{
file.read((unsigned char*) &data, sizeof(Data));
tempfile.write((unsigned char*)&data, sizeof(Data));
}
file.close();
tempfile.close();
// 3. Ponovo otvori prvu datoteku sve obrisi i prepisi drugu u prvu sve zatvori
ifstream _tempfile; // temp za citanje
ofstream _file; // baza za pisanje
_tempfile.open(temp,ios::binary);
_file.open("DataNEW.dat" , ios::binary|ios::trunc);
for (i = 0; i< brs-1; i++)
{
_tempfile.read((unsigned char*) &data, sizeof(Data));
_file.write((unsigned char*) &data, sizeof(Data)) ;
}
_tempfile.close();
_file.close();
// 4. Obrisi podatke iz druge datoteke
tempfile.open(temp, ios::binary|ios::trunc );
tempfile.close();
}
Ne znam ako se daoteka ugoji do nekoliko MB da li ce da drnda hard disk