Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kako odseci parce fajla

[es] :: C/C++ programiranje :: C/C++ za početnike :: kako odseci parce fajla

[ Pregleda: 1714 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sisko.Marcetic
Skobalj

Član broj: 153060
Poruke: 31
212.200.175.*



Profil

icon kako odseci parce fajla15.10.2007. u 13:24 - pre 172 meseci
Interesuje me kako bi moglo da se odsece prarce fajla od nekoliko bajtova - kraj fajla nesto slicno pascalovoj naredbi truncate() ako sam se dobro izrazio. Na primer imamo fajl sa strukturama - bazu podataka pa je potrebno iseci zadnji upisani slog - korisnicki definisanu strukturu njegove velicine. NAPOMENA: Koristim biblioteku funkcija i klasa iostream (metode klase ostream)
H V A L A dobri ljudi
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.vlayko.co.yu.



+1 Profil

icon Re: kako odseci parce fajla15.10.2007. u 15:15 - pre 172 meseci
Mislim da klase za rad sa fajlovima nemaju tu mogućnost. Možda da pomeriš fajl pointer na željeno mesto a da ostatak popuniš nulama? Ili da koristiš neku funkciju iz C biblioteke, POSIX npr. definiše truncate() i ftruncate().
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Sisko.Marcetic
Skobalj

Član broj: 153060
Poruke: 31
212.200.175.*



Profil

icon Re: kako odseci parce fajla16.10.2007. u 12:36 - pre 172 meseci
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
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: kako odseci parce fajla

[ Pregleda: 1714 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.