/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 17/04/2025

es04:
Scrivi una funzione che preso in ingresso il nome di due file
produca un nuovo file ottenuto dalla concatenazione dei due file.
*/

#include <stdio.h>

#define SIZE 1000+1

void concatenaFile(FILE * file_input1, FILE * file_input2);

int main(void) {
	char input1[SIZE];
	char input2[SIZE];
	
	printf("First input file: ");
	scanf("%s", input1);
	
	printf("Second input file: ");
	scanf("%s", input2);
	
	FILE * file_input1 = fopen(input1, "rb");
	FILE * file_input2 = fopen(input2, "rb");
	
	if (
		file_input1 != NULL &&
		file_input2 != NULL
	) {
		concatenaFile(file_input1, file_input2);
		
		fclose(file_input1);
		fclose(file_input2);
	} else {
		perror("Error (source)");
	}
	
	return 0;
}

void concatenaFile(FILE * file_input1, FILE * file_input2) {
	FILE * file_output = fopen("file_output.bin", "wb");
		
	if (file_output != NULL) {
		char buffer[SIZE];
		int byteLetti;
		
		while ((byteLetti = fread(buffer, 1, sizeof(buffer), file_input1)) > 0) {
			fwrite(buffer, 1, byteLetti, file_output);
		}
		
		while ((byteLetti = fread(buffer, 1, sizeof(buffer), file_input2)) > 0) {
			fwrite(buffer, 1, byteLetti, file_output);
		}
		
		printf("\nCheck the output file.");
		
		fclose(file_output);
	} else {
		perror("Error (destination)");
	}
}