#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;
}