C26-Esercizio 1

Avatar Paolo Godino

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

Soluzione:

/******************************************************************************

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>
#include <stdlib.h>

#define MAX_FILE_SIZE 1024

void unisci_file_binari(const char* file1, const char* file2) {
    FILE *fbin1, *fbin2, *fwr;
    
    char buffer[MAX_FILE_SIZE];
    
    if ((fwr = fopen("union.bin", "wb")) != NULL) {
        if ((fbin1 = fopen(file1, "rb")) != NULL) {
            int num_el1 = fread(buffer, sizeof(char), MAX_FILE_SIZE, fbin1);
            fwrite(buffer, sizeof(char), num_el1, fwr);
            printf("Elementi file1 %d\n", num_el1);
        } else {
            printf("Problema nell'apertura del primo file\n");
            fclose(fwr);
            return;
        }
        
        if ((fbin2 = fopen(file2, "rb")) != NULL) {
            int num_el2 = fread(buffer, sizeof(char), MAX_FILE_SIZE, fbin2);
            fwrite(buffer, sizeof(char), num_el2, fwr);
            printf("Elementi file2 %d\n", num_el2);
        } else {
            fclose(fbin1);
            fclose(fwr);
            printf("Problema nell'apertura del secondo file\n");
            return;
        }
    
        fclose(fbin1);
        fclose(fbin2);
    } else {
        printf("Problema nell'apertura del file in scrittura\n");
    }
}

int main() {
    unisci_file_binari("f1.bin", "f2.bin");
    
    return 0;
}

Tagged in :

Avatar Paolo Godino

Lascia un commento