Академический Документы
Профессиональный Документы
Культура Документы
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$: