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
!!!!