FCLOSE |
Fermer fichier |
---|---|
Langage C | stdio.h |
Syntaxe
int fclose(FILE *ptrfichier) |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
Description
Cette fonction permet d'effectuer la fermeture d'un fichier spécifié.
Algorithme
MODULE fclose(stream) SI stream est NULL ALORS RETOURNE EOF * Aucun fichier à fermer, renvoie une erreur FIN SI * Si des données sont en attente dans le tampon de sortie SI output_buffer n'est pas vide ALORS * Écrire les données du tampon dans le fichier SI flush(output_buffer) échoue ALORS RETOURNE EOF * Échec de l'écriture, renvoie une erreur FIN SI FIN SI * Libérer les ressources allouées au fichier release_file_resources(stream) * Fermer le fichier et libérer le descripteur SI close_file_descriptor(stream) échoue ALORS RETOURNE EOF * Erreur lors de la fermeture du fichier FIN SI RETOURNE 0 * Fichier fermé avec succès |
Remarques
- Vidage automatique des tampons : Lorsque le fichier est fermé, il videra également le contenu de tous les tampons de données réservé au fichier spécifié sur le disque ou le périphérique. Cela garantit que les données sont correctement écrites dans le fichier avant sa fermeture.
- Fermeture d'un flux de fichier : La fonction fclose permet de fermer un fichier précédemment ouvert avec des fonctions comme fopen ou freopen. Elle prend en paramètre un pointeur de type FILE*, représentant le flux de fichier à fermer. Cette fonction libère les ressources associées au flux, telles que les descripteurs de fichiers et les tampons mémoire.
- Retour de valeur : La fonction fclose renvoie une valeur de retour indiquant si la fermeture a réussi. Si la fermeture du fichier est réussie, elle retourne 0. Si une erreur se produit pendant la fermeture (par exemple, un problème d'écriture de tampon), elle retourne EOF, une constante généralement définie comme -1. Cela permet à l'utilisateur de vérifier si des erreurs sont survenues lors de la fermeture.
- Conséquences d'une fermeture incorrecte : Si un fichier est fermé de manière incorrecte (par exemple, si l'application plante avant d'appeler fclose), il peut y avoir des effets indésirables comme des écritures incomplètes ou la perte de données. Il est donc important d'appeler fclose chaque fois que l'on a terminé de travailler avec un fichier pour s'assurer que les ressources sont correctement libérées.
- Ne pas fermer un fichier déjà fermé : Il est important de ne pas appeler fclose sur un fichier qui a déjà été fermé ou sur un flux NULL. Cela peut entraîner un comportement indéfini, et dans de nombreux cas, provoquer des plantages ou des erreurs. Assurez-vous toujours que le flux est valide avant de tenter de le fermer.
- Comportement avec les flux standards : fclose peut également être utilisée pour fermer les flux standards tels que stdin, stdout, et stderr. Cependant, fermer ces flux dans des programmes normaux peut causer des problèmes, car ces flux sont utilisés pour les entrées/sorties de base. Il est donc généralement déconseillé de fermer ces flux à moins que cela ne soit strictement nécessaire dans des contextes spécifiques.
- Sécurité et gestion des erreurs : Il est essentiel de vérifier le retour de fclose pour s'assurer que la fermeture s'est effectuée correctement. Par exemple, dans le cas de fichiers ouverts en mode ajout ou écriture, des erreurs peuvent se produire si le tampon n'est pas correctement vidé. En cas de problème, une gestion d'erreur appropriée doit être mise en place, comme la récupération d'un message d'erreur ou l'écriture dans un journal de bord.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
Voir également
Langage de programmation - C - Référence procédures et fonctions - feof
Langage de programmation - C - Référence procédures et fonctions - fopen
Langage de programmation - C++ - Référence procédures et fonctions - fclose
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 94.
Dernière mise à jour : Mardi, le 28 juillet 2015