You are on page 1of 4

Atelier fichier et bases de donnes 2011 2012 Traitement des fichiers texte en C

Comment ouvrir un fichier : la fonction fopen

FILE* fichier !! "escripteur de fichier fichier # fopen$%&oil de carotte'txt%( %r%) if $fichier *# +,LL) !! ouverture r-ussie Mode Effet
"r" Ouverture dun fichier texte en lecture. "w" Cration dun fichier texte, ouverture en criture. Si le fichier existait dj , il est cras. "a" Ouverture dun fichier texte en criture, !ositionne"ent la fin #co"!lter$. Si le fichier nexistait !as, il est cr. "r%" Ouverture dun fichier texte en lecture&criture. "w%" Cration dun fichier texte, ouverture en lecture&criture. "a%" Ouverture dun fichier texte en lecture&criture, criture !artir de la fin.

&lusieurs fonctions de lecture pour le texte :

f'etc ( lit n caract)re * un caract)re. int f.etc$FILE* file) * f'ets ( lit une li'ne de texte. char* f.ets$char* /uffer( int max0count( FILE* file) + ,etourne buffer en cas de succ)s, -.// en cas dchec. + 0lace au "axi"u" "ax1count caract)res dans buffer. + Sarr2te la fin dune li'ne. f f l t l ifi ti d f t Anal3se et !ro'ra""ation 4 5 /e traite"ent de fichiers 67 * fscanf ( lecture selon une s!cification de for"at int fscanf$FILE* file( const char* format( ''') + 8onctionne co""e scanf, "ais lit de!uis un fichier.

1cc2s s-3uentiel

/e conten d fichier est l dans lordre de fa9on s: entielle * contenu du lu lordre, s:uentielle. * A !artir de la !osition courante. * On finit !ar atteindre la fin du fichier. + Co""ent dtecter la fin de fichier !ar !ro'ra""e * 8onction s!ciale feof #8ile End Of 8ile$ int feof$FILE* file) + ,etourne Anal3se et !ro'ra""ation 4 5 /e traite"ent de fichiers 66 * 7 si la fin de fichier nest !as atteinte. * .ne valeur diffrente de 7 :uand la fin de fichier est atteinte.

Atelier fichier et bases de donnes 2011 2012


Lors3ue le traitement de fichier est termin-

* ;l faut refer"er le fichier. * /a fonction fclose est !rvue cet effet. int fclose$FILE* file) + ,envoie 7 si la fer"eture a russi. + ,envoie <= 7 en cas de !robl)"e.

"-tecter les erreurs pendant la lecture

* ;l est vive"ent reco""and de le faire. * /a fonction ferror est !rvue cet effet int ferror$FILE* file) + ,envoie <= 7 si une erreur est survenue. + ,envoie 7 si tout va bien.
Exemple t4pi3ue pour la lecture d5un fichier texte

#include <stdio.h> #define LONGUEUR_MAX 80 int m in!" # $%LE& fichie'( ch ' li)ne*LONGUEUR_MAX+( fichie' , fo-en!./oil de c 'otte.t0t.1 .'."( if !fichie' 2, NULL" # 3hile !2feof!fichie'"" # f)ets!li)ne1 LONGUEUR_MAX1 fichie'"( if !2fe''o'!fichie'"" -uts!li)ne"( else # -'intf!.E''eu' lo's de l lectu'e du fichie'4n."( 5'e 6( 77 -ou'suite de l lectu'e im-ossi5le1 so'ti' 8 8 fclose!fichie'"( 8 else -'intf!.E''eu' lo's de l9ou:e'tu'e du fichie'.4n."( -'intf!./'esse; une touche...."( _)etch!"( 8

&lusieurs fonctions d5-criture pour le texte :


4

Atelier fichier et bases de donnes 2011 2012


f! tc ( crit n caract)re * f!utc un caract)re. int fputc$char c( FILE* file) + ,etourne le caract)re crit, ou EO8 #56$ en cas derreur. * f!uts ( crit une li'ne de texte et un saut de li'ne. int fputs$const char* text( FILE* file) + ,etourne une valeur non n'ative en cas de succ)s, EO8 si chec. + Ecrit une li'ne et un saut de li'ne dans le fichier. f i tf it l ifi ti d f t Anal3se et !ro'ra""ation 4 5 /e traite"ent de fichiers 6> * f!rintf ( criture selon une s!cification de for"at int fprintf$FILE* file( const char* format( ''') + 8onctionne co""e !rintf, "ais crit dans un fichier. + ,etourne le no"bre de caract)res crits, une valeur n'ative si erreur

Forcer l5-criture des donn-es

int fflush$FILE* file) * ,etourne 7 en cas de succ)s EO8 en cas derreur Anal3se et !ro'ra""ation 4 5 /e traite"ent de fichiers 6? succ)s, d erreur.

Exemple t4pi3ue pour l5-criture d5un fichier texte

#include <stdio.h> int m in!" # $%LE & fichie'( int i( fichie' , fo-en!.Ess i.t0t.1 .3."( if !fichie' 2, NULL" # fo' !i , 0( i < <0( i==" # f-'intf!fichie'1 .li)ne >d4n.1 i"( if !fe''o'!fichie'"" # -'intf!.E''eu' lo's de l9ec'itu'e.4n."( 5'e 6( 8 8 if !fclose!fichie'"" -'intf!.Le fichie' n9 - s ete co''ectement ec'it.4n."( 8 else -'intf!.E''eu' lo's de l9ou:e'tu'e du fichie'.4n."( -'intf!./'esse; une touche...."( _)etch!"(

Atelier fichier et bases de donnes 2011 2012


8

You might also like