School-Coding-Cpp/sfusi/es06_foschini_binaryfile.cpp

63 lines
1.2 KiB
C++

/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 25/04/2025
es06:
Scrivi una funzione che preso in ingresso il nome di due file
produca un nuovo file ottenuto dalla intersezione dei due file,
cioè inserendo solo i numeri in comune presenti nei due file.
*/
#include <iostream>
#define SIZE 100+1
using namespace std;
int main(void) {
char in1_file[SIZE];
char in2_file[SIZE];
cout << "First input file: ";
cin >> in1_file;
cout << "Second input file: ";
cin >> in2_file;
FILE * in1 = fopen(in1_file, "rb");
FILE * in2 = fopen(in2_file, "rb");
if (in1 != NULL && in2 != NULL) {
FILE * out = fopen("out.bin", "wb");
if (out != NULL) {
int num1;
int num2;
while (fread(&num1, sizeof(int), 1, in1) == 1) {
rewind(in2);
while (fread(&num2, sizeof(int), 1, in2) == 1) {
if (num1 == num2) {
fwrite(&num1, sizeof(int), 1, out);
cout << num1 << " ";
break;
}
}
}
fclose(out);
} else {
perror("Error (destination)");
}
fclose(in1);
fclose(in2);
} else {
perror("Error (source)");
}
return 0;
}