Fusione di due file di testo in c++

di il
3 risposte

Fusione di due file di testo in c++

/*fusione di
due file di testo
in un terzo file
ordinato
*/

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string.h>
#include <stddef.h>

#define L 150

using namespace std;

typedef char stringa[L];
//M:dichiarazione prototipi
void stampa_file(stringa);
int fusione_file(stringa,stringa,stringa);

int main(int argc, char *argv[])
{ stringa nome_file1,nome_file2,nome_file3;
char up,risp;
cout << "Inserisci nome del primo file\n";
cin.getline(nome_file1,L-1,'$');
cout << "Inserisci nome del secondo file\n";
cin.getline(nome_file2,L-1,'$');
cout << "Inserisci nome del terzo file\n";
cin.getline(nome_file3,L-1,'$');
cout<<endl;
switch(fusione_file(nome_file1,nome_file2,nome_file3)){
case 1:cout<<"errore apertura di "<<nome_file1;
break;
case 2:cout<<"errore apertura di "<<nome_file2;
break;
case 3:cout<<"errore apertura di "<<nome_file3;
break;
default:cout<<endl<<endl;
cout<<"Vuoi la stampa di controllo? s n \n";
cin.get(risp);
if(risp=='s'){
stampa_file(nome_file1);
stampa_file(nome_file2);
stampa_file(nome_file3);
}
}
system("pause");
return EXIT_SUCCESS;
}

int fusione_file(stringa nf1,stringa nf2,stringa nf3){
fstream ,f2,f3;
char buf1,buf2;
.open(nf1,ios::in);
if(f1==NULL)
return 1;
f2.open(nf2,ios::in);
if(f2==NULL)
return 2;
.open(nf3,ios::out);
if(f3==NULL)
return 3;

/* A:i due file sorgente non sono vuoti
*/

/*M:eseguo tanti confronti finchè non
scorro uno dei due file per intero */

while((!f1.eof())&&(!f2.eof())){
/*M prendo il file più piccolo e lo
scrivo nel terzo file*/
if(buf1<buf2){
<<buf1;
>>buf1;
}
else{
<<buf2;
f2>>buf2;
}
}
/*fine del ciclo while
soltanto uno dei due file è
stato copiato nell'altro*/

/*M:travaso il secondo file*/

while(!f1.eof()){
>>buf1;
<<buf1;
}
.close();
while(!f2.eof()){
f2>>buf2;
<<buf2;
}
f2.close();
.close();
}

/*funzione per la stampa del file*/
void stampa_file(stringa nf){
fstream f;
char buf;
cout<<"\n stampa contenuto del file "<<nf<<endl;
f.open(nf,ios::in);
if(!f){
cout<<"errore\n";
exit(1);
}
f.get(buf);
while(!f.eof()){
cout.put(buf);
f.get(buf);
}
f.close();
system("pause");
return;
}

3 Risposte

  • Re: Fusione di due file di testo in c++

    Salve a tutti sto cercando di unire due file di testo ma ottengo sempre l'errore di apertura sul secondo file(anche se gli ho fornito file diversi)
  • Re: Fusione di due file di testo in c++

    Se non usi i tag code il codice diventa illeggibile.

    In ogni caso, solo per il problema dell'apertura dei file (per il resto mi sembra ci siano altri problemi ma si vedranno dopo...), elimina il parametro

    , '$'

    dalle getline
  • Re: Fusione di due file di testo in c++

    Ho sostituito '$' nella getline con ' \n ',adesso funziona GRAZIE
Devi accedere o registrarti per scrivere nel forum
3 risposte