Bonjour,
Il y a une petite erreur dans ton exemple Tatouille :
Tu écrit :
sourceFile = fopen("file.c", "r");
destinationFile = fopen("file2.c", "w");
if(sourceFile==NULL)
{
printf("Error: can't access file.c.\n");
return 1;
}
else if(destinationFile==NULL) {
printf("Error: can't create file for writing.\n");
return 1;
}
Or si tu arrive a ouvrir la source et pas la destination, ta source reste ouverte et tu perd un descripteur de fichier. Comme le nombre de descripteur de fichier est limité (par session de la meme application) tu va saturer et au bout d'un moment plus aucun fichier ne pourra etre ouvert.
Ensuite le "else" ne sert a rien puisque le "return" rends la main a l'appelant.
Je prefererait donc :
sourceFile = fopen("file.c", "r");
if(sourceFile==NULL)
{
printf("Error: can't access file.c.\n");
return 1;
}
destinationFile = fopen("file2.c", "w");
if(destinationFile==NULL)
{
fclose(sourceFile); /* Je ferme le fichier source */
printf("Error: can't create file for writing.\n");
return 1;
}
Ensuite, plutot que de retourner (1) dans le cas d'une erreur, et (0) quand tout est bon, il pourrait etre intéressant d'utiliser "errno" qui donne un numéro d'erreur.
Cordialement