School-Coding-Cpp/sfusi/es05_foschini_binaryfile.cpp

68 lines
1.4 KiB
C++

/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 24/04/2025
es05:
Scrivi una funzione che preso in ingresso il nome di due file produca un nuovo
file ottenuto dalla concatenazione dei due file escludendo però i numeri duplicati.
*/
#include <iostream>
#define SIZE_FILE_NAME 1000+1
using namespace std;
int main(void) {
char in1_name[SIZE_FILE_NAME];
char in2_name[SIZE_FILE_NAME];
cout << "First input file: ";
cin >> in1_name;
cout << "Second input file: ";
cin >> in2_name;
FILE * in1 = fopen(in1_name, "rb");
FILE * in2 = fopen(in2_name, "rb");
if ((in1 != NULL) && (in2 != NULL)) {
FILE * out = fopen("out.bin", "wb");
if (out != NULL) {
int num;
int ultimo_letto = -1;
while (fread(&num, sizeof(int), 1, in1) == 1) {
cout << "Letto da in1: " << num << endl;
if (num != ultimo_letto) {
fwrite(&num, sizeof(int), 1, out);
ultimo_letto = num;
}
}
//fwrite("\n", sizeof(char), 1, out);
while (fread(&num, sizeof(int), 1, in2) == 1) {
cout << "Letto da in2: " << num << endl;
if (num != ultimo_letto) {
fwrite(&num, sizeof(int), 1, out);
ultimo_letto = num;
}
}
fclose(out);
} else {
perror("Error (destination)");
}
fclose(in1);
fclose(in2);
} else {
perror("Error (source)");
}
return 0;
}