Professional Documents
Culture Documents
Fvrier 2012
Etude thorique
I.
Pour lire et crire dans des fichiers, nous !llons nous servir de fonctions si tues dans la librairie stdio
1. fopen:ouverture du fichier
le &rotot)&e de la fonction fo&en FIL ! fopen"const char! nom#uFichier$ const char!modeOuverture%& *ette fonction attend + &aram,tres - Le nom du fichier . ouvrir - Le mode d'ouverture du fichier *ette fonction renvoie$$$ un &ointeur sur /0LE
'emarque
La fonction fo&en$ Elle renvoie un /0LE1$0l est im&ortant de rcu&rer ce &ointeur, &our &ouvoir ensuite lire et crire dans le fichier$ Nous allons donc crer un &ointeur de /0LE au dbut de notre fonction (&ar exem&le la fonction main Exem&le
"me =ar'ouri$:
TP N 1
Fvrier 2012 fichier < fo&en(6test$txt6, 6r>6#3return 435 Exem&le
Etude thorique
int main(# 2/0LE 1fichier<N%LL3 fichier< fo&en(6*-??Pro'ram /iles??Exem&le??exercice$txt6, 6r>6#3 return 435 /ester l*ouverture du fichier int main(# 2 /0LE1 fichier < N%LL3 fichier < fo&en(6test$txt6, 6r>6#3 if (fichier @< N%LL# 2AA 7n &eut lire et crire dans le fichier5 Else 2AA 7n affiche un messa'e d'erreur si on veut &rintf(60m&ossible d'ouvrir le fichier test$txt6#35 return 43 5
II.
1.
0l existe &lusieurs fonctions ca&ables d'crire dans un fichier$ *e sera . vous de choisir celle qui est la plus adapte . votre cas. 0oici les 1fonctions que 2ous allons tudier : f&utc- crit un caract,re dans le fichier (%N:E%L caract,re . la fois#$ f&uts- crit une chaBne dans le fichier f&rintf- crit une chaBne 6formate6 dans le fichier, fonctionnement quasiCidentique . &rintf
Fputc
:on &rotot)&e int fputc"int caractere$ FIL ! pointeur3urFichier%&'emarque :La fonction retourne un int$ c*est un code d*erreur. Cet int vaut OF si l*criture a chou Exem&le int main(# 2 /0LE1 fichier < N%LL3 fichier < fo&en(6test$txt6, 6D6#3 if (fichier @< N%LL# 2 f&utc('!', fichier#3AAEcriture du caract,re !fclose(fichier#3 5
"me =ar'ouri$:
TP N 1
Fvrier 2012 return 435
Etude thorique
Fputs
Protot)&e de la fonction char! fputs"const char! chaine$ FIL ! pointeur3urFichier%& Exem&le int main(# 2 /0LE1 fichier < N%LL3 fichier < fo&en(6test$txt6, 6D6#3 if (fichier @< N%LL# 2 f&uts(6:alut "0P* 6, fichier#3 fclose(fichier#3 5 return 43 5
Fprintf
int main(# 2 /0LE1 fichier < N%LL3 int a'e < 43 fichier < fo&en(6test$txt6, 6D6#3 if (fichier @< N%LL# 2 AA 7n demande l'E'e &rintf(6Fuel a'e ave9Cvous G 6#3 scanf(6Hi6, Ia'e#3 AA 7n l'crit dans le fichier f&rintf(fichier, 6Le "onsieur qui utilise le &ro'ramme, il a Hd ans6, a'e#3 fclose(fichier#3 5 return 435
4.
1 $ + $ J $
Fgetc
int f'etc(/0LE1 &ointeurKe/ichier#3 int main(# 2 /0LE1 fichier < N%LL3char caractere!ctuel 3 fichier < fo&en(6test$txt6, 6r6#3 if (fichier @< N%LL# 2 AA Loucle de lecture des caract,res un . undo2 caractere!ctuel < f'etc(fichier#3 AA 7n lit le caract,re &rintf(6Hc6, caractere!ctuel#3 AA 7n l'affiche5Dhile (caractere!ctuel @< E7/#3 AA 7n continue tant que f'etc n'a &as retourn E7/ (fin de fichier#fclose(fichier#35 return 43
"me =ar'ouri$:
TP N 1
Fvrier 2012 5
Etude thorique
Fgets
Protot5pe :char! fgets"char! chaine$int nombre#eCaracteres6Lire$FIL !pointeur3urFichier%& Exem&le
Mdefine T!0LLEN"!O 1444 AA Tableau de taille 1444 int main(# 2 /0LE1 fichier < N%LL3 char chainePT!0LLEN"!O>1Q < 663 AA *haBne vide de taille T!0LLEN"!Ofichier < fo&en(6test$txt6, 6r6#3 if (fichier @< N%LL# 2 f'ets(chaine, T!0LLEN"!O, fichier#3 AA 7n lit maximum T!0LLEN"!O caract,res du fichier, on stocRele tout dans 6chaine6&rintf(6Hs6, chaine#3 AA 7n affiche la chaBne fclose(fichier#3 5 return 43 5 Exem&le
Mdefine T!0LLEN"!O 1444 intmain(# 2 /0LE1 fichier < N%LL3 char chainePT!0LLEN"!OQ < 663fichier < fo&en(6test$txt6, 6r6#3 if (fichier @< N%LL# 2 Dhile (f'ets(chaine, T!0LLEN"!O, fichier# @< N%LL#AA 7n lit le fichier tant qu'on ne reSoit &as d'erreur (N%LL# 2&rintf(6Hs6, chaine#3 AA 7n affiche la chaBne qu'on vient de lire5fclose(fichier#3 5 return 43 5
Fscanf
int main(# 2 /0LE1 fichier < N%LL3int scorePJQ < 24,4,453 AA Tableau des J meilleurs scoresfichier < fo&en(6test$txt6, 6r6#3 if (fichier @< N%LL# 2 fscanf(fichier, 6Hd Hd Hd6, IscoreP4Q, IscoreP1Q, IscoreP+Q#3 &rintf(6Les meilleurs scores sont - Hd, Hd et Hd6, scoreP4Q,scoreP1Q, scoreP+Q#3 fclose(fichier#3 5 return 43 5
"me =ar'ouri$:
TP N 1
Fvrier 2012
Etude thorique
III.
0l existe J fonctions . connaBtre 1 $ f t e l l - indique . quelle &osition vous (tes actuellement dans le fichier +$fseeR -&ositionne le curseur . un endroit &rcis J$reDind -remet le curseur au dbut du fichier (c'est quivalent . demander . la fonction fseeR de &ositionner le curseur au dbut#$
893 / - indique le dbut du fichier$ 89C:' - indique la &osition actuelle du curseur$ 89 2# - indique la fin du fichier
Exem&le Le code suivant &lace le curseur + caract,res a&r,s le dbut fseeR(fichier, +, :EEUN:ET#3 Le code suivant &lace le curseur T caract,res avant la &osition courante fseeR(fichier, CT, :EEUN*% #3
I0.
0nt rename (const char1 ancienNom,const char1 nouveauNom# 3 0nt remove(const char1 nom fichier!su&&rimer# 3
"me =ar'ouri$: