Accès aux fichiers en C
Accès aux fichiers en C Principe Accès bas niveau Accès haut niveau Gestion des erreurs
Principe Les fichiers possède un nom physique (ex : toto.txt). En programmation, le nom physique est seulement utilisé pour récupérer les propriétés du fichier (son type, son emplacement sur le disque, sa date de création, de modification...). Pour manipuler le fichier, les programmes utilisent un nom logique qui est un identificateur renvoyé lors de l’ouverture ou de la création d’un fichier.
Principe Ouverture Traitement Fermeture
Principe Ouverture Lecture Ecriture Ajout Création Traitement Fermeture
Principe Ouverture Lecture Ecriture Ajout Création Traitement Fermeture
Accès bas niveau Approche dite de bas niveau ou "par octet". L'accès au fichier dépend directement du système. Dans ce cas, la manipulation des fichiers se fait par un identificateur de type entier (descripteur)
Descripteurs standards : stdin (0) stdout (1) stderr (2) Accès bas niveau Descripteurs standards : stdin (0) stdout (1) stderr (2)
Seulement 5 fonctions (sous UNIX/LINUX): creat open read write close Accès bas niveau Seulement 5 fonctions (sous UNIX/LINUX): creat open read write close
Accès haut niveau Approche dite de haut niveau où l’on considère le fichier comme un ensemble de blocs structurés. L'accès est indépendant du système (les fonctions utilisées sont standard quelquesoit le système d'exploitation).
Accès haut niveau La structure la plus simple est un fichier texte. Lorsque le fichier est constitué de bloc de données de même type, c’est un fichier d’enregistrement. On y accède par bloc et non, octet par octet.
Accès haut niveau L'accès ne se fait plus par le nom logique du fichier (descripteur), mais via un pointeur de type FILE *.
Accès haut niveau Ouverture/création : fopen Lecture Caractère : fgetc Chaine : fgets Type particulier : fscanf Bloc : fread
Accès haut niveau Ecriture Caractère : fputc Chaine : fputs Type particulier : fprintf Bloc : fwrite Fermeture : fclose
Gestion des erreurs La plupart des fonctions d'ouverture, de lecture ou d'écriture mettent à jour une variable particulière en cas d'erreur. Cette variable fait partie de la bibliothèque <errno.h> et se nomme errno et contient de numéro de l'erreur.
Gestion des erreurs Voici un exemple d'utilisation: int fd; fd = open( "/home/unfichier.txt", O_RDWR ); if ( fd == -1 ) // pb ouverture fichier { printf( "%s\n", strerror( errno ) ); exit( errno ); } Afficher le message d'erreur correspondant au numéro errno
LES IMPERATIFS Toutes les fonctions de manipulations de fichiers retournent une valeur. Cette dernière doit OBLIGATOIREMENT être testée afin de savoir si l'opération sur le fichier s'est effectuée correctement.