FLSI602 Génie Informatique et Réseaux Alberto Bosio alberto.bosio@lirmm.fr www.lirmm.fr/~bosio/FLSI602
La gestion des fichiers Pour manipuler un fichier : l'adresse de mémoire-tampon où se trouve le fichier; la position de la tête de lecture; le mode d'accès au fichier (lecture ou écriture). Ces informations sont rassemblées dans une structure FILE * (défini dans <stdio.h>); Un objet de type FILE * est appelé flot de données (en anglais, stream).
Les flots d’entrées et de sorties standard stdin (standard input) : unité d'entrée (par défaut, le clavier) ; stdout (standard output) : unité de sortie (par défaut, l'écran) ; stderr (standard error) : unité d'affichage des messages d'erreur (par défaut, l'écran).
Ouverture et fermeture d'un fichier fopen("nom-de-fichier","mode"); La valeur retournée est un flot de données (FILE*); Le premier argument est le nom du fichier concerné; Le second argument spécifie le mode d'accès au fichier les fichiers textes: pour lesquels les caractères de contrôle (retour à la ligne ...) seront interprétés en tant que tels lors de la lecture et de l'écriture ; les fichiers binaires, pour lesquels les caractères de contrôle se sont pas interprétés.
Ouverture et fermeture d'un fichier
Ouverture et fermeture d'un fichier r, le fichier doit exister. w, le fichier peut ne pas exister. Dans ce cas, il sera créé. Si le fichier existe déjà, son ancien contenu sera perdu. a, le fichier peut ne pas exister. Dans ce cas, il sera créé. Si le fichier existe déjà, les nouvelles données seront ajoutées à la fin du fichier précédent.
Ouverture et fermeture d'un fichier fclose(flot); Elle permet de fermer le flot qui a été associé à un fichier par la fonction fopen; L’argument flot est le flot de type FILE* retourné par la fonction fopen correspondant. La fonction fclose retourne un entier qui vaut zéro si l'opération s'est déroulée normalement (et une valeur non nulle en cas d'erreur).
Les entrées-sorties formatées La fonction fprintf, analogue à printf, permet d'écrire des données dans un fichier. fprintf(flot,"chaîne de contrôle",arg1,...,argn); L’argument flot est le flot de données retourné par la fonction fopen; Les spécifications de format utilisées pour la fonction fprintf sont les mêmes que pour printf.
Les entrées-sorties formatées La fonction fscanf, analogue à scanf, permet de lire des données dans un fichier. Sa syntaxe est semblable à celle de scanf : fscanf(flot,"chaîne de contrôle",arg1,...,argn); L’argument flot est le flot de données retourné par fopen. Les spécifications de format sont ici les mêmes que celles de la fonction scanf.
Impression et lecture de caractères La fonction fgetc permet de lire un caractère dans un fichier. int fgetc(FILE* flot); La fonction fgetc, de type int, retourne le caractère lu dans le fichier; Retourne la constante EOF lorsqu'elle détecte la fin du fichier. L’argument flot est le flot de type FILE* retourné par la fonction fopen. Déclarer de type int la variable destinée à recevoir la valeur de retour de fgetc à fin de détecter correctement la fin de fichier.
Impression et lecture de caractères La fonction fputc permet d’écrir un caractère dans un fichier : int fputc(int caractere, FILE *flot); Retourne l'entier correspondant au caractère écrit (ou la constante EOF en cas d'erreur). L’argument flot est le flot de type FILE* retourné par la fonction fopen.
Lecture d’une chaîne de caractères char * fgets(char * str,int n,FILE *flot ); str est une chaîne de caractères, n un entier et flot le flot de type FILE* Lire dans un fichier, caractère par caractère à partir de la position courante, jusqu'à n-1, ou si rencontre le caractère de fin de ligne '\n’
Lecture d’une chaîne de caractères Lire une ligne de fichier, sans dépasser un nombre maximum de caractères n. Le nombre de caractères lus soit égal à n - 1. Les caractères lus sont copiés dans str, y compris le caractère de fin de ligne si celui-ci fait partie des au plus n-1 caractères lus. La fonction fgets complète la chaîne par le traditionnel '\0'. Retourne le pointer à la chaîne de caractères (str), ou NULL dans le cas EOF.
Exercice Ecrire le programme capable de lire le contenu du fichier texte entree.txt, et le recopie caractère par caractère dans le fichier sortie.txt :
Exercice 2 Un fichier texte contient des informations relatives aux employés d'une entreprise. Pour chaque employé est donné nom et prénom. La première ligne spécifie le nombre des employés. Exemple 2 Dupont Albert Girard Robert
Exercice 2 Ecrire la structure des données nécessaire pour stocker les informations du fichier texte Ecrire le programme pour lire le fichier texte