Fstream jednoczesny odczyt i zapis do pliku

0

Witam, gdy otwieram plik przy użyciu fstream
slo.open( "s.txt", std::in | std::out | ios::binary );
następnie chcę coś odczytać slo.read(bfs, rozmiar_bloku);
i na końcu zapisać slo.write(bf,rozmiar_bloku);

otwarcie pliku i odczyt są w porządku, ale zapis do pliku już nie chce się zrealizować.
plik pozostaje pusty a slo.fail() zwraca true, dlaczego tak się dzieje?

0

SOA#1
pokaż kod

0
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;

int rozmiar_bloku=8;
int main(int argc, char *argv[])
{
std::ifstream plik;
std::fstream slo;
std::ofstream cp;
plik.open( "p.txt", std::ios::in |ios::binary );
slo.open( "s.txt", std::ios::in | std::ios::out|ios::binary );
cp.open( "c.txt", std::ios::out |ios::binary |ios::app);
char bf[500];
char bfs[500];
bool zn=false;
int nr=1;
char bajt=0;
while (plik.good() and !plik.eof()){
ZeroMemory(&bf,sizeof(bf));
plik.read( bf, rozmiar_bloku ); //odczytanie bloku danych z pierwszego pliku.
bf[rozmiar_bloku]=NULL;
   
slo.seekg(0,ios_base::beg);
zn=false;
nr=1;
while (slo.good() and !slo.eof()){ //przeszukiwanie pliku2 w poszukiwaniu czy jest w nim taki sam blok danych
ZeroMemory(&bfs,sizeof(bfs));
slo.read( bfs, rozmiar_bloku );  //odczytanie bloku z pliku nr 2
bfs[rozmiar_bloku]=NULL;
cout<<bf<<" [] "<<bfs<<endl;
if (strcmp(bf, bfs)==0){cout<<"OK "<<nr<<endl;bajt=nr;cp.write(&bajt,1); zn=true;break;   }  // porównywanie, jeżeli znalazł to zapisanie numeru bloku do pliku nr 3 
nr++; 
}
if (zn==false){slo.seekp(0,ios_base::end),slo.write(bf,rozmiar_bloku );bajt=nr,
cp.write(&bajt,1);  } // jeżeli w pliku nr 2 nie znaleziono bloku podobnego to dodanie go i zapisanie numeru bloku w pliku nr 3 i właśnie tutaj coś nie chce działać wpisanie bloku do pliku nr 2.

}
plik.close();
slo.close();
cp.close();
    system("PAUSE");
    return EXIT_SUCCESS;
}
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1