p.s. ho dimenticato di copiarti l'esempio di fwrite()/fread()
Questo appende n files (a tua scelta quanti e quali) in uno nuovo
Ci avevo messo anche parekki commenti quindi dovrebbe essere di facile comprensione
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFSIZE 1024 //Grandezza in bytes del buffer #define SLEN 20 //Lunghezza max nome files void append(FILE *, FILE *); //Parametri: file da appendere, file in cui appendere void main(){ FILE *fileAppend, *fileSource; int files = 0; // Nr file appesi char file_app[SLEN]; // Nome file in cui appendere tutti gli altri char file_src[SLEN]; // Nome file da appendere puts("Enter name of destination file:"); gets(file_app); if(!(fileAppend = fopen(file_app, "a"))) abort(); //Ridefiniamo la dimensione del buffer. In tal modo possiamo passare fino a BUFSIZE bytes per volta if(setvbuf(fileAppend, NULL, _IOFBF, BUFSIZE)){ //0 è il valore ritornato in caso di successo. fputs("Can't create output buffer\n", stderr); abort(); } puts("Enter name of first source file (empty line to quit):"); while(gets(file_src) && file_src[0] != '\0'){ //Se il primo char della stringa ne indica la fine allora non è stato inserito nulla if(strcmp(file_src, file_app) == 0) fputs("Can't append file to itself\n",stderr); else if(!(fileSource = fopen(file_src, "r"))){ fprintf(stderr, "Can't open %s\n", file_src); break; } append(fileSource, fileAppend); fclose(fileSource); files++; printf("File %s appended.\n", file_src); puts("Next file (empty line to quit):"); } printf("Done. %d files appended.\n", files); fclose(fileAppend); } void append(FILE *source, FILE *dest){ size_t bytes; static char temp[BUFSIZE]; //Variabile statica, allochiamo solo una volta. while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) > 0) fwrite(temp, sizeof(char), bytes, dest); }![]()

