Les variables fichiers - PowerPoint PPT Presentation

1 / 15
About This Presentation
Title:

Les variables fichiers

Description:

a ajoute: ouvre ou cr e un fichier texte et se positionne en criture la fin du fichier. ... a ajoute, ouvre ou cr e un fichier texte en mode mise jour et se positionne en ... – PowerPoint PPT presentation

Number of Views:70
Avg rating:3.0/5.0
Slides: 16
Provided by: Hom82
Category:

less

Transcript and Presenter's Notes

Title: Les variables fichiers


1
Les variables fichiers
2
Le type fichier
  • On manipule les fichiers par lintermédiaire de
    structures FILE décrites dans stdio.h
  • FILE monFichier
  • Nom physique
  • Type daccès(binaire ou formaté distinction
    floue)
  • Adresse du buffer
  • Position dans le fichier
  • Indicateur derreur
  • Trois fichiers/flux standard, ouvert par défaut
    stdin, stdout et stderr

3
Ouverture/Fermeture dun fichier
  • Faire le lien entre le nom physique (chaîne de
    caractère, chemin absolu ou relatif) et le nom
    logique (nom du pointeur)
  • Ouvrir dans le mode choisi (binaire, écriture,
    écraser, lecture,)
  • Se positionner au début de fichier
  • fich fopen(nom_physique, mode)
  • TESTER si le fichier a été ouvert (pas null).
  • fopen(nom, r) ?0 si le fichier nexiste
    pas.
  • fopen(nom, w) ?0 si le chemin daccès est
    faux.
  • fclose(fich)

4
Mode douverture
  • r ouverture dun fichier texte en lecture
  • w crée un fichier texte en écriture, écrase le
    contenu précédent si le fichier existait.
  • a ajoute ouvre ou crée un fichier texte et se
    positionne en écriture à la fin du fichier.
  • r ouvre un fichier en mode mise à jour (lecture
    et écriture)
  • w crée un fichier texte en mode mise à jour,
    écrase le contenu précédent si le fichier
    existait.
  • a ajoute, ouvre ou crée un fichier texte en mode
    mise à jour et se positionne en écriture à le fin
    du fichier.

5
Exemple
  • FILE fich
  • char nom100
  • printf(nom du fichier à lire \n)
  • scanf(s,nom)
  • if( (fichfopen(nom, r)) NULL)
  • exit(1)

6
Les entrées/sorties caractère
  • int getc(FILE ) int fgetc(FILE ) int
    getchar()
  • int putc(FILE ) int fputc(FILE ) int
    putchar()
  • Exemple
  • void main(void)
  • int c
  • FILE fich
  • fich fopen(données, r)
  • do
  • c getc(fich)
  • while(c EOF)
  • Autre test sortie int feof(FILE ) retourne pas
    zéro si EOF

7
Les entrées/sorties formatées
  • Les fonctions fprintf() et fscanf() sutilisent
    exactement de la même façon que printf et scanf,
    il suffit dajouter un paramètre pointeur de
    fichier
  • FILE fichier
  • fichier fopen(nomFichier, w)
  • int x25
  • fprintf(fichier, d\n,x)
  • Qui pourra être lu par fscanf(fichier,d,a)

8
Les entrées/sorties binaires bufferisées
  • Sur fichiers ouverts en binaire fich
    fopen(monFichier, rb)
  • size_t fread(void ptr, size_t size, unsigned int
    n, FILE stream)
  • size_t fwrite(void ptr, size_t size, unsigned
    int n, FILE stream)
  • Principe écrire directement la représentation
    machine des variables (cest-à-dire de leur
    contenu mémoire)
  • Exemple short x 1024 00000100 00000000
  • fprintf(fich,d,x) écrira les 4 caractères
    1, 0, 2 et 4 dans le fichier texte
  • fwrite(x, sizeof(x), 1, fich) écrira les deux
    octets dans le fichier

9
Les entrées/sorties binaires bufferisées(2)
  • Avantages stockage réduit et lecture/écriture
    efficace. (une copie de la mémoire)
  • Inconvénients non portable (taille des objets
    diff.), non lisibles par éditeurs de textes.
    (créer des programmes scanf/fwrite et
    fread/printf C pour les convertir)

10
Fonction de parcours du fichier
  • int fseek(FILE flux, long int offset, int flag)
  • Modifie la position du pointeur de fichier (lieu
    du prochain accès).
  • Flag
  • SEEK_SET début de fichier
  • SEEK_CUR relativement à la position courante
  • SEEK_END fin du fichier

11
Traitement des erreurs de gestion de fichier
  • Accès à des fichiers est source derreurs
    multiples
  • Lors de louverture (fichier inexistant, droits
    restrictifs, manque de place, erreur matérielle)
  • Rencontre dune fin de fichier
  • Manque de place sur lunité concernée
  • Destruction de la structure FILE
  • Mauvaise opération sur pointeur de fichier

12
Détection des erreurs
  • Seule lerreur matérielle est détecté par le
    système, toute les autres ne provoquent PAS
    larrêt du programme il faut les traiter.
  • Un indicateur ferror peu efficace (oui/non)
  • int ferror(FILE )
  • Un indicateur errno peu fiable
  • Détection de la fin de fichier avec feof (il faut
    avoir lu la fin de fichier pour la reconnaître)
  • Consulter les valeurs de retour des fonctions

13
Détection des erreurs
  • nb_ecrit fwrite(,nblocs,fich)
  • Si nb_ecrit nblocs OK, si inf erreur
  • nb_lu fread(, nblocs,fich)
  • Si nb_lu nblocs et !feof, OK
  • Si nb_lu est inf. à nblocs et !feof, pb materiel
  • Si nb_lu 0 et feof, fin de fichier normal
  • Si nb_lu !0 et eof, fin de fichier anormal

14
Détection des erreurs
  • ncar fprintf(fich, ) si negatif alors pb
  • nb_lu fsanf (fich,)
  • Si nb_lu nb_attendu et !feof, OK
  • Si nb_lu est inf. à nb_attendu et !feof, pb
    materiel
  • Si nb_lu EOF et feof, fin de fichier normal
  • Si nb_lu !EOF et eof, fin de fichier anormal

15
Détection des erreurs
  • c_ecrit fputc(,fich)
  • c_ecrit ! EOF, lécriture sest bien déroulé
  • sinon, erreur décriture par manque de place ou
    erreur matériel.
  • ret fgetc(fich)
  • ret ! EOF et !feof lecture normale
  • ret EOF et !feof pb matériel
  • feof fin de fichier normale
Write a Comment
User Comments (0)
About PowerShow.com