School-Coding-Cpp/sfusi/es04_foschini_binaryfile.c

67 lines
1.4 KiB
C

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