1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| int copier(char * destination, char * source, int taille_art){
int i, nb_art, num_log, num_log2, try1, try2;
num_log = ouvrir(source,'l',taille_art);
num_log2 = ouvrir(destination,'e',taille_art);
if(num_log == -1 || num_log2 == -1){
return -1;
}
nb_art = tab_bcf[num_log].nb_article_file;
char * temp;
for(i=0;i<nb_art;++i){
temp = lire(num_log,taille_art);
ecrire(num_log2,taille_art,temp);
}
try1 = fermer(num_log);
//c'est ici qu'il y a le problème
try2 = fermer(num_log2);
if(try1 == -1 || try2 == -1){
return -1;
}
return 0;
}
int fermer (int num_log){
//on se place dans le premier bloc pour sauvegarder les valeurs du fichier
lseek(tab_bcf[num_log].num_physic,0,SEEK_SET);
write(tab_bcf[num_log].num_physic, &tab_bcf[num_log].taille_article,sizeof(int));
write(tab_bcf[num_log].num_physic, &tab_bcf[num_log].nb_article_file,sizeof(int));
int i ;
//c'est ici que se retrouve le probleme
i = close(num_log);
if(i == -1){
printf("erreur fermeture\n");
}
//mise à jour du tab_ouvert
strcpy(tab_ouvert[num_log],pasfich);
//mise à jour du bcf
tab_bcf[num_log].num_physic=-1;
//on libere le tampon
free(tab_bcf[num_log].tampon);
return i;
} |
Partager