Allora ho provatto la tua funzione è va tutto bene.

Ho deciso quindi di fare un programmino che mi separarasse i file(splittare) per poterli dopo ricomporre...

Ho deciso quindi di fare due programmini...

Uno che mi dividesse i file:

codice:
//Programma che dato un file lo divide in più parti
#include<stdio.h>
#include<string.h>
FILE *fi,*fo[100];
char per1[199],per2[199],buf[99],c1[99],c2[99],per3[199],perFile[]="/file0.spt";
int c=99,sp=0,conta=0,num=0,i=0,ch=65;
main() {
printf("Inserire il percorso del file da copiare:");
scanf("%s",per1);
printf("\nInserire ora la cartella di destinazione:");
scanf("%s",per2);
printf("\nInserire il numero di byte in cui dividere il file:");
scanf("%d",&sp);
//Verifico che il file esista
fi=fopen(per1,"rb"); 
if(fi==NULL) {
	printf("\nAttenzione il file è inesistente");
}
else {
//Inizio a separare il file
while(!feof(fi)) {
	if(conta==0) {
		perFile[5]=ch;
		strcpy(per3,per2);
		strcat(per3,perFile);
		fo[i]=fopen(per3,"ab+");
		printf("%d",c);
	}
	fread(buf,1,c,fi);
	fwrite(buf,1,c,fo[i]);
	conta++;
	if(sp-(100*conta)==0) {
	i++;
	conta=0;
	ch++;
	}


}
}
}
ed un altro che me li ricomponesse:

codice:
#include<stdio.h>
#include<string.h>
//Programma che desplitta un file
FILE *fi[100],*fo;
char per1[199],per2[199],per3[199],ch='A',nomeF[]="/fileA.spt",buf[99],bufs[99];
int i=0,nFile=0,c=99,lFile=0,conta=0;
main() {
printf("Inserire cartella di origine dei file:");
scanf("%s",&per1);
printf("\n\nInserire percorso del file di destinazione:");
scanf("%s",&per2);
//trovo numero di file 
strcpy(per3,per1);
nomeF[5]=ch;
strcat(per3,nomeF);
while ((fi[i]=fopen(per3,"r"))!=NULL) {
	fclose(fi[i]);
	nFile++;
	i++;
	ch++;
	strcpy(per3,per1);
	strcpy(buf,bufs);
	nomeF[5]=ch;
	strcat(per3,nomeF);
}
//Ora rimetto insieme i file
ch='A';
fo=fopen(per2,"ab+");
for(i=0;i<nFile;i++) {
	c=99;
	strcpy(per3,per1);
	nomeF[5]=ch;
	strcat(per3,nomeF);
	fi[i]=fopen(per3,"rb");
	fseek(fi[i],0,2);
	lFile=ftell(fi[i]);
	fseek(fi[i],0,0);
	printf("%s",per3);
	while(!feof(fi[i])) {
		fread(buf,1,c,fi[i]);
		fwrite(buf,1,c,fo);
		conta++;
	}
fclose(fi[i]);
ch++;
}
}
Il primo funziona bene infatti dopo che creato i file se vado a vedere la somma delle loro dimensioni è uguale identica alla dimensione del file originale....

I problemi sorgono con il secondo programma:

I file me li ricompone ma la dimensione del file che vado a creare non è più la dimensione del file che avevo originariamente.

c'è una differenza infatti di 500 byte.

Se vado infatti nel file che ho creato, a verificare, vedo che quei 500 byte in più sono solo spazi vuoti!!!

Non so proprio come fare a procedere anche se penso che il problema stia nel secondo programma...

Vi prego aiutatemi sono in crisi !!!!