Sie sind auf Seite 1von 20

Dpartements Gnie Civil & Mcanique nergtique

La gestion de fichiers
1. 2. 3. 4. Les Flots Ouverture / Fermeture d'un fichier Lecture / criture dans un fichier Formats

1 Fichier sur 1 Disque


Chemin d'accs "path" : C:\Repertoire\SousRep1\...\SousRepN\Nom.ext Structure arborescente de rpertoire, sous rpertoires, Unit logique Nom du Fichier et son extension

Le mode d'accs Les attributs de protection.


Prog. struct. C VI- La gestion de fichiers 2

Gestion de Fichiers pour le programmeur


Transfrer l'information d'une source vers une destination. Par consquent, grer un flot d'informations.

Prog. struct. C

VI- La gestion de fichiers

Flot dinformations
Source : Mmoire de masse Clavier Port Srie Mmoire ... octets Flot //stream Flot stream Destination : Mmoire de masse Console Port Srie Mmoire ...

Prog. struct. C

VI- La gestion de fichiers

La direction du Flot
Dans la gestion d'un flot, au moins l'une des destinations est la mmoire de l'ordinateur. Pour crire dans le fichier les informations de la mmoire, on accde au fichier en criture. Le flot est en sortie. Pour lire les informations du fichier et les stocker dans la mmoire, on accde au fichier en lecture. Le flot est en entre.
Prog. struct. C VI- La gestion de fichiers 5

<stdio.h> standard input output

C'est l qu'est dfinie la structure FILE !

Prog. struct. C

VI- La gestion de fichiers

Ouverture/Fermeture de flots en C (ANSI)


Toutes les fonctions de gestion des flots admettent comme paramtre un pointeur sur la structure FILE dfinie dans stdio.h. On ouvre le flot en appelant fopen() qui affecte une valeur cette variable pointeur. Le flot est ferm par fclose().

Prog. struct. C

VI- La gestion de fichiers

Les Modes d'ouverture


Les flots/fichiers peuvent tre ouverts en mode : Lecture "r" la destination existe "r+" possibilit d'criture Ecriture "w" la destination est cre ou ouverte "w+" possibilit de lecture Ajout "a" criture la fin du fichier "a+" possibilit de lecture

Si la lecture ou l'criture doivent tre faits en binaire, il faut ajouter "b" au mode (ex : "rb").
Prog. struct. C VI- La gestion de fichiers 8

Les Fonctions gnrales


Cration, ouverture d'un fichier FILE *fopen(const char *nom,const char *mode) Fermeture d'un fichier FILE *fclose(FILE *stream) Cration d'un fichier temporaire FILE *tmpfile(void) Fin d'un fichier int feof(FILE *stream)

Prog. struct. C

VI- La gestion de fichiers

Exemple
#include <stdio.h> int main() { //pointeurs sur fichier FILE *pFascii,*pFbin; pFascii = fopen("totoascii.txt","w"); pFbin = fopen("totobin.moi","wb"); fclose(pFascii); fclose(pFbin); }

texte_bin.prj

Prog. struct. C

VI- La gestion de fichiers

10

Les Flots prdfinis


3 pointeurs sur structure FILE sont grs par le systme d'exploitation : stdin gre les informations envoyes par le clavier (entre). stdout gre les informations diriges vers l'cran (sortie). stderr dirige les informations gnres par les erreurs vers un priphrique de sortie.
Prog. struct. C VI- La gestion de fichiers 11

Exemple
#include <stdio.h> int main() { fprintf(stdout,"Voici une alternative printf()\n"); } ecran.prj

Prog. struct. C

VI- La gestion de fichiers

12

criture dans un fichier


Ecriture au format texte : int fprintf(FILE *pfile,const char *format,) int fputc(int caractere,FILE *pfile)
/* crit la chane formate dans le fichier. Elle retourne le nombre de caractres crits, ou un nombre <0 si erreur */

/* cette fonction crit le caractre c (converti en unsigned char). le caractre crit est retourn, EOF sinon */

int fputs(const char *s,FILE *pfile)

/* cette fonction crit la chane s dans le fichier. Elle retourne une valeur positive ou nulle, EOF s'il y a eu une erreur */

Ecriture au format binaire : size_t fwrite(const void *source,size_t taille, size_t nombre,FILE *pfile)

/* cette fonction crit les nombre objets, chacun ayant la taille indique, qui se trouvent les uns la suite des autres l'adresse indique par source. Elle renvoie le nombre d'objets crits, qui peut tre infrieur au nombre demand (en cas d'erreur) */
Prog. struct. C VI- La gestion de fichiers 13

Lecture dans un fichier


Lecture au format texte : int fscanf(FILE *pfile,const char *format,) int fgetc(FILE *pfile)
/* cette fonction lit la chane formate dans le fichier. Elle retourne le nombre de caractres luts, ou un nombre <0 si erreur */

/* Renvoie le caractre suivant sur le flot indiqu, ou EOF si la fin du fichier est atteinte ou si une erreur survient. C'est une vraie fonction */

int fgets(char *s,int n,FILE *pfile)

/* cette fonction lit des caractres dans le fichier et les place dans l'espace point par s. Elle s'arrte lorsqu'elle a lu n-1 caractres ou lorsqu'elle a rencontr un caractre '\n' */

Lecture au format binaire : size_t fread(void *dest,size_t taille, size_t nombre,FILE *pfile)
Prog. struct. C VI- La gestion de fichiers

/* cette fonction lit sur le flot indiqu le nombre objets, chacun ayant la taille indique, et les copie les uns la suite des autres dans l'espace point par destination */
14

Positionnement dans un fichier


Dplacement : int fseek(FILE *pfile,long deplacement,int orig)
avec orig = SEEK_SET le dbut du fichier, SEEK_CUR la position courante, SEEK_END la fin du fichier

Re-positionnement au dbut du fichier : void rewind(FILE *pfile) Connatre la position dans le fichier : Au void fgetpos(FILE *flot, fpos_t *ptr) t ilis

er a vec pr c: Fixer la position dans le fichier au ti fpos_t *ptr) void fsetpos(FILE *flot, conston ! !
Prog. struct. C VI- La gestion de fichiers

/*Place dans ptr la position courante dans le fichier indiqu en vue de son utilisation par fsetpos*/

15

Formats d'criture
%[flags][width][.precision][{h|L|l}]type
flags (-,+,0, ,#) : mise en forme du texte width : Longueur minimum du texte .precision : Nombre de chiffres aprs la virgule (.) type : 1) Flottants e,E,f,g,G 2) Entiers gnraliss c,d,i,o,u,x,X 3) Chanes de caractres s

[{h|L|l}] en option h pour court, l ou L pour long


Prog. struct. C VI- La gestion de fichiers 16

Formats de lecture
%[*] [width] [{h | l }]type

Mme signification de width et de type. * signifie que la lecture suivante sera faite, mais non transfre en mmoire.

Prog. struct. C

VI- La gestion de fichiers

17

Flots textes formats


En criture : int printf (const char *format,) int fprintf (FILE *pfile,const char *format,) int sprintf (char *pdesti,const char *format,) En lecture : int scanf (const char *format,) int fscanf (FILE *pfile,const char *format,) int sscanf (const char *psource, const char *format,)
Prog. struct. C VI- La gestion de fichiers 18

... int main() { FILE *srce; /* fichier de texte */ FILE *dest; /* fichier binaire */ ... if ((srce = fopen(nomfich, "r")) == NULL) exit(ERREUR_OUVERTURE); ... for (;;) //tant qu'il y a des choses lire { ... break;

Exemple 1 : texte format -> fichier binaire

if ((nb=fscanf(srce, "%s %s\n", art.nom, art.prenom)) != 2)

} ... }

fichier.prj

Prog. struct. C

VI- La gestion de fichiers

19

Exemple 2 : les formats


#include <stdio.h> int main() { const double pi=4*atan(1); printf("%lf\n",pi); printf("%1.3lf",pi);

formats.prj

Prog. struct. C

VI- La gestion de fichiers

20

Das könnte Ihnen auch gefallen