1 / 16

FLSI602 Génie Informatique et Réseaux

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;

clodia
Download Presentation

FLSI602 Génie Informatique et Réseaux

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FLSI602 Génie Informatique et Réseaux Alberto Bosio alberto.bosio@lirmm.fr www.lirmm.fr/~bosio/FLSI602

  2. 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).

  3. 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).

  4. 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.

  5. Ouverture et fermeture d'un fichier

  6. 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.

  7. 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).

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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’

  13. 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.

  14. 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 :

  15. 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

  16. 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

More Related