/*
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;
}