faziix napisał: Witam. Mam nastepujacy problem. Wezmy pod uwage plik tekstowy zajmujacy jakies 30 MB i zawierajacy kilkaset tysiecy lini tekstu. Pozniej do tego pliku dokladamy jeszcze np 10 lini

I teraz chodzi mi o program ktory porowna mi linia po lini te dwa pliki i rózniace sie wersy zapisze do trzeciego pliku

jakby ktos mogł podac tu kodzik zrodłowy ( zbyt długi to on chyba nie bedzie) to byłbym wdzieczny. Pozdrawiam

Prawdę mówiąc nie widziałem pliku tekstowego 30Mb,ale widocznie mało widziałem. Dołączam kod programu wykorzystuje dwa kontenery set.
Jeżeli pliki będą >>>> to prog. będzie musiał korzystać z pliku wymiany i wykonanie trochę potrwa.
Dodaję że dodane linie mogą być w pliku dowolnie położone np:
plik I 1;2;3;4
plik II 0;00;1;5;2;6;3;4;7
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <conio.h>
using namespace std;
char cc1[50],cc2[50],cc3[50];
char c;
int nr=0;
int nr1=0;
int nr2=0;
string st,line;
vector <string> v1;
vector <string> v2;
int main()
{
st="";
cout<<"podaj sciezke do mniejszego pliku ";cin>>cc1;
cout<<"podaj sciezke do wiekszego (dopisanego) pliku ";cin>>cc2;
cout<<"podaj sciezke do pliku wynikowego ";cin>>cc3;
ofstream out_plik;
out_plik.open (cc3, ofstream::out);
ifstream odcz1;
ifstream odcz2;
odcz1.open (cc1, ifstream::in);
while(!odcz1.eof())
{
nr1++;
odcz1.getline(cc1,50);
v1.push_back(cc1);
v1.push_back("\n");
}
odcz1.close();
odcz2.open (cc2, ifstream::in);
while(!odcz2.eof())
{
nr2++;
odcz2.getline(cc2,50);
v2.push_back(cc2);
v2.push_back("\n");
}
odcz2.close();
vector<string>::iterator it;
powt: {
cout<<"czekaj...";
if(v1.size()==v2.size()){out_plik.close(); exit(0);}
if(v1[nr]!=v2[nr])
{out_plik<< v2[nr];
it=v2.begin()+nr;
v2.erase(it);
nr=0;
} else
{nr++;goto powt;}
}
if(nr<nr1-1) goto powt;
getch();
}