Académique Documents
Professionnel Documents
Culture Documents
La gestion de fichiers
1. 2. 3. 4. Les Flots Ouverture / Fermeture d'un fichier Lecture / criture dans un fichier Formats
Prog. struct. C
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
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
Prog. struct. C
Prog. struct. C
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
Prog. struct. C
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
10
Exemple
#include <stdio.h> int main() { fprintf(stdout,"Voici une alternative printf()\n"); } ecran.prj
Prog. struct. C
12
/* cette fonction crit le caractre c (converti en unsigned char). le caractre crit est retourn, EOF sinon */
/* 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
/* 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 */
/* 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
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
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
17
... 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;
} ... }
fichier.prj
Prog. struct. C
19
formats.prj
Prog. struct. C
20