SlideShare une entreprise Scribd logo
1  sur  35
www.esprit.ens.tn
Se former autrement
pour une nouvelle génération d’ingénieurs
Programmation Procédurale 2
Equipe Algorithmique
2018 / 2019
La manipulation des fichiers en C
2
Plan:
 Motivation
 Qu'est-ce qu'un fichier ?
 Déclaration
 Les types de fichiers
 Ouverture/Fermeture
 Lecture/écriture dans un fichier texte
 Lecture /écriture dans un fichier binaire
 Renommer un fichier
 Supprimer un fichier
La manipulation des fichiers en c
3
Motivation
Un programme a en général besoin :
De sauvegarder des variables alors qu’elles sont créées dans la
mémoire vive et une fois le programme est arrêté, ces variables
sont supprimées de la mémoire et il devient impossible d’accéder
à leurs valeurs.
De lire des données (texte, nombres, images, sons, mesures, …)
De sauvegarder des résultats (texte, nombres, images, sons,
signaux générés, …)
Cela se fait en lisant et en écrivant dans des fichiers 4
Qu'est-ce qu'un fichier ?
 Données organisées, support de sauvegarde (disquette,
disque dur, CD/DVD)
peut contenir du texte, de la vidéo, des données pour des
applications.
Mémoire de masse persistante (pas effacée quand hors-
tension)
5
Manipulation de fichiers
Opérations standard à mener pour travailler avec un fichier :
Ouvrir un fichier : lui associer une variable que l'on appelle
descripteur de fichier : permettra l'accès au fichier.
Lire ou écrire des informations à partir de ce descripteur avec
des fonctions spécialement prévues pour les fichiers.
Fermer le fichier : indiquer qu'on a terminé de travailler avec ce
fichier
Supprimer un fichier
Renommer un fichier 6
 Déclaration:
Pour manipuler un fichier on a besoin d’un certain nombre
d’informations comme:
 Le mode d’accès à ce fichier
 L’adresse de la mémoire tampon où se trouve le fichier
 La position de la tête de lecture/écriture
 État d’erreur…
Toutes ces informations sont rassemblées dans le type FILE
Ce type est défini dans la bibliothéque <stdio.h>
Un objet de type FILE* est nommé un flot de données
Déclaration
7
Les fichiers textes
Un fichier texte est un fichier dont le contenu représente
une suite de caractères lisibles.
Les types de fichiers
8
Les fichiers binaires:
Tout fichier qui n’est pas de type texte est un fichier binaire
Dans un fichier texte, on enregistre un texte lisible.
Dans un fichier binaire, on peut enregistrer n'importe quelle
donnée(texte, image, son) mais qui n'est pas interprétable.
Les types de fichiers
9
 Pour pouvoir lire et écrire dans un fichier il faut commencer par ouvrir ce fichier.
 Syntaxe: f=fopen("chemin", "mode");
 La fonction fopen ouvre un fichier et lui associe un flot de donnée (elle renvoie un
pointeur sur le fichier).
 Si l'exécution de cette fonction ne se déroule pas normalement, elle retourne une valeur
NULL Il est donc recommandé de faire un test
- f est une variable de type FILE*
- Le premier paramètre est le chemin d’accès au fichier :
Exemple :
"monFich.txt" s’il est situé dans le même dossier que votre exécutable
" C:mondossiermonFich.txt " s’il est situé n’importe où ailleurs sur le disque dur.
- Le deuxième paramètre est une chaine de caractère spécifiant le mode d’accès .
Ouverture d’un fichier
10
Ouverture d’un fichier
 Les modes d’accès à un fichier texte:
"r" ouverture d'un fichier texte en lecture
"w" ouverture d'un fichier texte en écriture
"a" ouverture d'un fichier texte en écriture à la fin
"r+" ouverture d'un fichier texte en lecture/écriture
"w+" ouverture d'un fichier texte en lecture/écriture
"a+" ouverture d'un fichier texte en lecture/écriture à la fin
11
Si le mode contient la lettre r, le fichier doit exister.
Si le mode contient la lettre w, le fichier peut ne pas exister.
Dans ce cas, il sera créé.
Si le fichier existe déjà, son ancien contenu sera perdu.
Si le mode contient la lettre a, le fichier peut ne pas exister.
Dans ce cas, il sera créé.
Si le fichier existe déjà, les nouvelles données seront ajoutées à
la fin du fichier précédent.
Ouverture d’un fichier
12
Ouverture d’un fichier
 Les modes d’accès à un fichier binaire:
"rb" ouverture d'un fichier binaire en lecture
"wb" ouverture d'un fichier binaire en écriture
"ab" ouverture d'un fichier binaire en écriture à la fin
"r+b" ouverture d'un fichier binaire en lecture/écriture
"w+b" ouverture d'un fichier binaire en lecture/écriture
"a+b" ouverture d'un fichier binaire en lecture/écriture à la fin
13
Ouverture d’un fichier
Juste après l'ouverture du fichier, il faut impérativement vérifier si
l'ouverture est réussi ou non. Pour faire ça, c'est très simple : si le
pointeur vaut NULL, l'ouverture a échoué. S'il vaut autre chose que
NULL, l'ouverture a réussi.
On va donc suivre systématiquement le schéma suivant :
14
Mode
d’ouverture
 Après les manipulations, on doit annuler la liaison entre le fichier et
le flot de donnée via la fonction fclose :
fclose(f);
 Cette fonction a pour rôle de libérer la mémoire, c'est-à-dire
supprimer votre fichier chargé dans la mémoire vive.
 Si on oublie de libérer la mémoire, votre programme risque à la fin
de prendre énormément de mémoire qu'il n'utilise plus
 La fonction fclose retourne un entier qui vaut zéro si l'opération s'est
déroulée normalement (et une valeur non nulle en cas d'erreur).
Fermeture d’un fichier
15
Fermeture d’un fichier
16
Ecriture dans un fichier texte
17
 Ecriture d’un caractère :
 La fonction fputc, analogue à putchar, permet d’écrire un caractère
dans un fichier texte. Syntaxe:
fputc(c,f);
Où c est une variable de type char .
Ecriture dans un fichier texte
18
 Ecriture d’une ligne dans un fichier texte : fputs
 La fonction fputs, analogue à puts, permet d’écrire toute une ligne
dans un fichier texte. Syntaxe:
fputs(chaine,f);
Où:
-chaîne est de type pointeur vers char et pointe vers un tableau de
caractères.
La fonction fputs rend une valeur non négative si l'écriture se passe
sans erreur, et EOF en cas d'erreur.
Ecriture dans un fichier texte
19
 Ecriture formatée dans un fichier texte:
 La fonction fprintf, analogue à printf, permet d'écrire des données dans un
fichier texte à part le fait que vous devez indiquer le fichier en premier
paramètre. Syntaxe:
int fprintf(f,"chaîne de contrôle",expression-1, ..., expression-n);
 la valeur de retour indique le nombre de caractères écrits
Exemple:
fprintf(f, " %s %s %dn",nom, prenom, age);
Remarques:
 Un 'n' écrit dans un fichier provoquera un passage à la ligne
 le caractère de fin de fichier est ajouté automatiquement, pas besoin de le mettre.
Ecriture dans un fichier texte
20
Lecture depuis un fichier texte
21
 Lecture d’un caractère:
 La fonction fgetc, analogue à getchar, permet de lire un caractère dans un
fichier texte. Syntaxe:
c = fgetc(f);
Cette fonction dont le type de retour est int, retourne le caractère lu dans
le fichier. Elle retourne la constante EOF (End-Of-File) lorsqu'elle
détecte la fin du fichier.
 Au fur et à mesure que vous lisez un caractère du fichier avec fgetc, vous
avez un « curseur » qui avance. C'est un curseur virtuel bien entendu.
 Vous pouvez donc créer une boucle pour lire les caractères un par un dans
le fichier.
Lecture depuis un fichier texte
22
Lecture depuis un fichier texte
23
 Lecture par ligne dans un fichier texte: fgets
 La fonction fgets, analogue à gets, permet de lire toute une ligne dans un
fichier texte (elle s’arrête au premier n qu’elle rencontre). Syntaxe:
fgets(chaine,taille,f);
La fonction fgets() :
lit une ligne et la stocke dans le tableau chaîne.
lit au plus un nombre de caractères égal à taille diminué de un afin de laisser
la place pour le caractère nul, qui est automatiquement ajouté.
La fonction fgets rend un pointeur sur chaîne en cas de lecture sans erreur, ou
un pointeur NULL dans le cas de fin de fichier ou d'erreur.
En cas de fin de fichier ou erreur, fgets rend NULL et non pas EOF!
Lecture depuis un fichier texte
24
 Vous n’avez qu’à faire un While pour boucler tant que fgets ne
renvoie pas NULL.
Lecture depuis un fichier texte
25
 Lecture formatée dans un fichier texte:
 La fonction fscanf, analogue à scanf, permet de lire des données dans un fichier
texte.
 Syntaxe:
int fscanf(f,"chaîne de contrôle",argument-1, ..., argument-n);
fscanf fournit le nombre de valeurs lues convenablement ou la valeur EOF si une
erreur s’est produite ou si une fin de fichier a été rencontrée avant qu’une seule
valeur ait pu être lue.
 Exemple:
fscanf(f, " %s %s %dn",nom, prenom, &age);
Lecture/écriture dans un fichier binaire
26
 Les entrées/sorties binaires:
 Ces entrées/sorties sont plus efficaces que les entrées
sortie standard car les données sont transférées sans
transcodage.
 Inconvénient: Ces fichiers ne sont pas portables car le
codage dépend de la machine.
Ecriture dans un fichier binaire
27
 La fonction qui permet de sauvegarder des données dans un fichier binaire:
size_t fwrite(void *pointeur, size_t taille, size_t nombre, FILE *flot);
• pointeur : zone de mémoire où se trouvent les éléments à écrire dans le fichier
• taille : taille en octets d'un élément
• nombre : nombre d'éléments à écrire
• flot : fichier où aura lieu l’écriture.
• La valeur de retour indique le nombre d'éléments effectivement écrits.
Exemple: pour écrire une donnée de type Etudiant e et la sauvegarder dans le
fichier f
fwrite( &e, sizeof(Etudiant), 1, f);
Lecture depuis un fichier binaire
28
 La fonction qui permet de lire des données à partir d’un fichier binaire:
size_t fread (void *pointeur, size_t taille, size_t nombre, FILE *flot);
• pointeur : zone de mémoire où sera stockée les données lus à partir du fichier
• taille : taille en octets d'un élément
• nombre : nombre d'éléments à lire
• flot : fichier où aura lieu la lecture.
• La valeur de retour indique le nombre d'éléments effectivement lus.
Exemple: pour lire une donnée de type Etudiant et la sauvegarder dans la
variable e:
fread( &e, sizeof(Etudiant), 1, f);
Exemple de programmes utilisant des fichiers binaires : utiliser la similitude entre
tableaux et fichiers binaires .
Premier programme : tableau contenant des struct, à écrire dans un fichier binaire.
La structure est définie ainsi :
Fichiers binaires et tableaux
29
Que va faire le programme ?
Déclarer un tableau contenant des valeurs de type t_complex;
Initialiser le tableau;
ouvrir un fichier binaire en écriture
si l'ouverture s'est bien déroulée
écrire les éléments du tableau dans le fichier
fermer le fichier
Fichiers binaires et tableaux
30
où remplacer les 3 fwrite par un seul :
Fichiers binaires et tableaux
31
Lecture d'un fichier binaire pour placer les valeurs lues dans un
tableau : il faut par contre connaître par avance le nombre
d'éléments stockés dans le fichier ou utiliser une boucle pour lire le
fichier.
Dans l'exemple qui suit, on va reprendre le fichier créé par
l'écriture précédente et le relire.
On garde le type créé t_complex, défini de la même manière.
Programme très ressemblant, on utilisera fread à la place de fwrite!
Fichiers binaires et tableaux
32
Fichiers binaires et tableaux
33
Renommer un Fichier
34
 La fonction rename() permet de renommer un fichier
prototype :
int rename(const char* ancienNom, const char* nouveauNom);
La fonction renvoie 0 si elle a réussi à renommer, sinon
elle renvoie une valeur différente de 0.
Supprimer un fichier
35
 La fonction Remove supprime un fichier sans demander de
confirmation
prototype :
int remove(const char* fichier);

Contenu connexe

Similaire à Manipulation_des_fichiers_en_C.ppsx

Stockage de données dans Android : Fichiers
Stockage de données dans Android : FichiersStockage de données dans Android : Fichiers
Stockage de données dans Android : FichiersLilia Sfaxi
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementborhen boukthir
 
Gestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfGestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfMadaniAhlem2
 
Les instructions simples en pascal p1
Les instructions simples en pascal p1Les instructions simples en pascal p1
Les instructions simples en pascal p1دليل الحياة
 
Formation Informatique base et généralités
Formation Informatique base et généralitésFormation Informatique base et généralités
Formation Informatique base et généralitésSinovatia
 
Chap3 Communication Inter Processus.pptx
Chap3 Communication Inter Processus.pptxChap3 Communication Inter Processus.pptx
Chap3 Communication Inter Processus.pptxZohraQassimi
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaKorteby Farouk
 
Cours système d’exploitation partie3
Cours système d’exploitation partie3Cours système d’exploitation partie3
Cours système d’exploitation partie3manou2008
 
Scripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxScripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxFrancisRUKAN
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXEmmanuelle Morlock
 
Petit precis des_commandes_unix_utiles_a_ubuntu
Petit precis des_commandes_unix_utiles_a_ubuntuPetit precis des_commandes_unix_utiles_a_ubuntu
Petit precis des_commandes_unix_utiles_a_ubuntuEl7fe Eternal
 
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfgPile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfgNabil Alami
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2MEZied
 

Similaire à Manipulation_des_fichiers_en_C.ppsx (20)

Stockage de données dans Android : Fichiers
Stockage de données dans Android : FichiersStockage de données dans Android : Fichiers
Stockage de données dans Android : Fichiers
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrement
 
Gestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfGestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdf
 
Les instructions simples en pascal p1
Les instructions simples en pascal p1Les instructions simples en pascal p1
Les instructions simples en pascal p1
 
Formation Informatique base et généralités
Formation Informatique base et généralitésFormation Informatique base et généralités
Formation Informatique base et généralités
 
Chap3 Communication Inter Processus.pptx
Chap3 Communication Inter Processus.pptxChap3 Communication Inter Processus.pptx
Chap3 Communication Inter Processus.pptx
 
PHP5 et les fichiers
PHP5 et les fichiersPHP5 et les fichiers
PHP5 et les fichiers
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / Tunisie
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Tubes.pdf
Tubes.pdfTubes.pdf
Tubes.pdf
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en Java
 
Cours système d’exploitation partie3
Cours système d’exploitation partie3Cours système d’exploitation partie3
Cours système d’exploitation partie3
 
Scripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxScripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptx
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
 
JAVA-IO.pdf
JAVA-IO.pdfJAVA-IO.pdf
JAVA-IO.pdf
 
JAVA-IO.pdf
JAVA-IO.pdfJAVA-IO.pdf
JAVA-IO.pdf
 
Langage C
Langage CLangage C
Langage C
 
Petit precis des_commandes_unix_utiles_a_ubuntu
Petit precis des_commandes_unix_utiles_a_ubuntuPetit precis des_commandes_unix_utiles_a_ubuntu
Petit precis des_commandes_unix_utiles_a_ubuntu
 
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfgPile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2ME
 

Manipulation_des_fichiers_en_C.ppsx

  • 1. www.esprit.ens.tn Se former autrement pour une nouvelle génération d’ingénieurs Programmation Procédurale 2 Equipe Algorithmique 2018 / 2019
  • 2. La manipulation des fichiers en C 2
  • 3. Plan:  Motivation  Qu'est-ce qu'un fichier ?  Déclaration  Les types de fichiers  Ouverture/Fermeture  Lecture/écriture dans un fichier texte  Lecture /écriture dans un fichier binaire  Renommer un fichier  Supprimer un fichier La manipulation des fichiers en c 3
  • 4. Motivation Un programme a en général besoin : De sauvegarder des variables alors qu’elles sont créées dans la mémoire vive et une fois le programme est arrêté, ces variables sont supprimées de la mémoire et il devient impossible d’accéder à leurs valeurs. De lire des données (texte, nombres, images, sons, mesures, …) De sauvegarder des résultats (texte, nombres, images, sons, signaux générés, …) Cela se fait en lisant et en écrivant dans des fichiers 4
  • 5. Qu'est-ce qu'un fichier ?  Données organisées, support de sauvegarde (disquette, disque dur, CD/DVD) peut contenir du texte, de la vidéo, des données pour des applications. Mémoire de masse persistante (pas effacée quand hors- tension) 5
  • 6. Manipulation de fichiers Opérations standard à mener pour travailler avec un fichier : Ouvrir un fichier : lui associer une variable que l'on appelle descripteur de fichier : permettra l'accès au fichier. Lire ou écrire des informations à partir de ce descripteur avec des fonctions spécialement prévues pour les fichiers. Fermer le fichier : indiquer qu'on a terminé de travailler avec ce fichier Supprimer un fichier Renommer un fichier 6
  • 7.  Déclaration: Pour manipuler un fichier on a besoin d’un certain nombre d’informations comme:  Le mode d’accès à ce fichier  L’adresse de la mémoire tampon où se trouve le fichier  La position de la tête de lecture/écriture  État d’erreur… Toutes ces informations sont rassemblées dans le type FILE Ce type est défini dans la bibliothéque <stdio.h> Un objet de type FILE* est nommé un flot de données Déclaration 7
  • 8. Les fichiers textes Un fichier texte est un fichier dont le contenu représente une suite de caractères lisibles. Les types de fichiers 8
  • 9. Les fichiers binaires: Tout fichier qui n’est pas de type texte est un fichier binaire Dans un fichier texte, on enregistre un texte lisible. Dans un fichier binaire, on peut enregistrer n'importe quelle donnée(texte, image, son) mais qui n'est pas interprétable. Les types de fichiers 9
  • 10.  Pour pouvoir lire et écrire dans un fichier il faut commencer par ouvrir ce fichier.  Syntaxe: f=fopen("chemin", "mode");  La fonction fopen ouvre un fichier et lui associe un flot de donnée (elle renvoie un pointeur sur le fichier).  Si l'exécution de cette fonction ne se déroule pas normalement, elle retourne une valeur NULL Il est donc recommandé de faire un test - f est une variable de type FILE* - Le premier paramètre est le chemin d’accès au fichier : Exemple : "monFich.txt" s’il est situé dans le même dossier que votre exécutable " C:mondossiermonFich.txt " s’il est situé n’importe où ailleurs sur le disque dur. - Le deuxième paramètre est une chaine de caractère spécifiant le mode d’accès . Ouverture d’un fichier 10
  • 11. Ouverture d’un fichier  Les modes d’accès à un fichier texte: "r" ouverture d'un fichier texte en lecture "w" ouverture d'un fichier texte en écriture "a" ouverture d'un fichier texte en écriture à la fin "r+" ouverture d'un fichier texte en lecture/écriture "w+" ouverture d'un fichier texte en lecture/écriture "a+" ouverture d'un fichier texte en lecture/écriture à la fin 11
  • 12. Si le mode contient la lettre r, le fichier doit exister. Si le mode contient la lettre w, le fichier peut ne pas exister. Dans ce cas, il sera créé. Si le fichier existe déjà, son ancien contenu sera perdu. Si le mode contient la lettre a, le fichier peut ne pas exister. Dans ce cas, il sera créé. Si le fichier existe déjà, les nouvelles données seront ajoutées à la fin du fichier précédent. Ouverture d’un fichier 12
  • 13. Ouverture d’un fichier  Les modes d’accès à un fichier binaire: "rb" ouverture d'un fichier binaire en lecture "wb" ouverture d'un fichier binaire en écriture "ab" ouverture d'un fichier binaire en écriture à la fin "r+b" ouverture d'un fichier binaire en lecture/écriture "w+b" ouverture d'un fichier binaire en lecture/écriture "a+b" ouverture d'un fichier binaire en lecture/écriture à la fin 13
  • 14. Ouverture d’un fichier Juste après l'ouverture du fichier, il faut impérativement vérifier si l'ouverture est réussi ou non. Pour faire ça, c'est très simple : si le pointeur vaut NULL, l'ouverture a échoué. S'il vaut autre chose que NULL, l'ouverture a réussi. On va donc suivre systématiquement le schéma suivant : 14 Mode d’ouverture
  • 15.  Après les manipulations, on doit annuler la liaison entre le fichier et le flot de donnée via la fonction fclose : fclose(f);  Cette fonction a pour rôle de libérer la mémoire, c'est-à-dire supprimer votre fichier chargé dans la mémoire vive.  Si on oublie de libérer la mémoire, votre programme risque à la fin de prendre énormément de mémoire qu'il n'utilise plus  La fonction fclose retourne un entier qui vaut zéro si l'opération s'est déroulée normalement (et une valeur non nulle en cas d'erreur). Fermeture d’un fichier 15
  • 17. Ecriture dans un fichier texte 17  Ecriture d’un caractère :  La fonction fputc, analogue à putchar, permet d’écrire un caractère dans un fichier texte. Syntaxe: fputc(c,f); Où c est une variable de type char .
  • 18. Ecriture dans un fichier texte 18  Ecriture d’une ligne dans un fichier texte : fputs  La fonction fputs, analogue à puts, permet d’écrire toute une ligne dans un fichier texte. Syntaxe: fputs(chaine,f); Où: -chaîne est de type pointeur vers char et pointe vers un tableau de caractères. La fonction fputs rend une valeur non négative si l'écriture se passe sans erreur, et EOF en cas d'erreur.
  • 19. Ecriture dans un fichier texte 19  Ecriture formatée dans un fichier texte:  La fonction fprintf, analogue à printf, permet d'écrire des données dans un fichier texte à part le fait que vous devez indiquer le fichier en premier paramètre. Syntaxe: int fprintf(f,"chaîne de contrôle",expression-1, ..., expression-n);  la valeur de retour indique le nombre de caractères écrits Exemple: fprintf(f, " %s %s %dn",nom, prenom, age); Remarques:  Un 'n' écrit dans un fichier provoquera un passage à la ligne  le caractère de fin de fichier est ajouté automatiquement, pas besoin de le mettre.
  • 20. Ecriture dans un fichier texte 20
  • 21. Lecture depuis un fichier texte 21  Lecture d’un caractère:  La fonction fgetc, analogue à getchar, permet de lire un caractère dans un fichier texte. Syntaxe: c = fgetc(f); Cette fonction dont le type de retour est int, retourne le caractère lu dans le fichier. Elle retourne la constante EOF (End-Of-File) lorsqu'elle détecte la fin du fichier.  Au fur et à mesure que vous lisez un caractère du fichier avec fgetc, vous avez un « curseur » qui avance. C'est un curseur virtuel bien entendu.  Vous pouvez donc créer une boucle pour lire les caractères un par un dans le fichier.
  • 22. Lecture depuis un fichier texte 22
  • 23. Lecture depuis un fichier texte 23  Lecture par ligne dans un fichier texte: fgets  La fonction fgets, analogue à gets, permet de lire toute une ligne dans un fichier texte (elle s’arrête au premier n qu’elle rencontre). Syntaxe: fgets(chaine,taille,f); La fonction fgets() : lit une ligne et la stocke dans le tableau chaîne. lit au plus un nombre de caractères égal à taille diminué de un afin de laisser la place pour le caractère nul, qui est automatiquement ajouté. La fonction fgets rend un pointeur sur chaîne en cas de lecture sans erreur, ou un pointeur NULL dans le cas de fin de fichier ou d'erreur. En cas de fin de fichier ou erreur, fgets rend NULL et non pas EOF!
  • 24. Lecture depuis un fichier texte 24  Vous n’avez qu’à faire un While pour boucler tant que fgets ne renvoie pas NULL.
  • 25. Lecture depuis un fichier texte 25  Lecture formatée dans un fichier texte:  La fonction fscanf, analogue à scanf, permet de lire des données dans un fichier texte.  Syntaxe: int fscanf(f,"chaîne de contrôle",argument-1, ..., argument-n); fscanf fournit le nombre de valeurs lues convenablement ou la valeur EOF si une erreur s’est produite ou si une fin de fichier a été rencontrée avant qu’une seule valeur ait pu être lue.  Exemple: fscanf(f, " %s %s %dn",nom, prenom, &age);
  • 26. Lecture/écriture dans un fichier binaire 26  Les entrées/sorties binaires:  Ces entrées/sorties sont plus efficaces que les entrées sortie standard car les données sont transférées sans transcodage.  Inconvénient: Ces fichiers ne sont pas portables car le codage dépend de la machine.
  • 27. Ecriture dans un fichier binaire 27  La fonction qui permet de sauvegarder des données dans un fichier binaire: size_t fwrite(void *pointeur, size_t taille, size_t nombre, FILE *flot); • pointeur : zone de mémoire où se trouvent les éléments à écrire dans le fichier • taille : taille en octets d'un élément • nombre : nombre d'éléments à écrire • flot : fichier où aura lieu l’écriture. • La valeur de retour indique le nombre d'éléments effectivement écrits. Exemple: pour écrire une donnée de type Etudiant e et la sauvegarder dans le fichier f fwrite( &e, sizeof(Etudiant), 1, f);
  • 28. Lecture depuis un fichier binaire 28  La fonction qui permet de lire des données à partir d’un fichier binaire: size_t fread (void *pointeur, size_t taille, size_t nombre, FILE *flot); • pointeur : zone de mémoire où sera stockée les données lus à partir du fichier • taille : taille en octets d'un élément • nombre : nombre d'éléments à lire • flot : fichier où aura lieu la lecture. • La valeur de retour indique le nombre d'éléments effectivement lus. Exemple: pour lire une donnée de type Etudiant et la sauvegarder dans la variable e: fread( &e, sizeof(Etudiant), 1, f);
  • 29. Exemple de programmes utilisant des fichiers binaires : utiliser la similitude entre tableaux et fichiers binaires . Premier programme : tableau contenant des struct, à écrire dans un fichier binaire. La structure est définie ainsi : Fichiers binaires et tableaux 29
  • 30. Que va faire le programme ? Déclarer un tableau contenant des valeurs de type t_complex; Initialiser le tableau; ouvrir un fichier binaire en écriture si l'ouverture s'est bien déroulée écrire les éléments du tableau dans le fichier fermer le fichier Fichiers binaires et tableaux 30
  • 31. où remplacer les 3 fwrite par un seul : Fichiers binaires et tableaux 31
  • 32. Lecture d'un fichier binaire pour placer les valeurs lues dans un tableau : il faut par contre connaître par avance le nombre d'éléments stockés dans le fichier ou utiliser une boucle pour lire le fichier. Dans l'exemple qui suit, on va reprendre le fichier créé par l'écriture précédente et le relire. On garde le type créé t_complex, défini de la même manière. Programme très ressemblant, on utilisera fread à la place de fwrite! Fichiers binaires et tableaux 32
  • 33. Fichiers binaires et tableaux 33
  • 34. Renommer un Fichier 34  La fonction rename() permet de renommer un fichier prototype : int rename(const char* ancienNom, const char* nouveauNom); La fonction renvoie 0 si elle a réussi à renommer, sinon elle renvoie une valeur différente de 0.
  • 35. Supprimer un fichier 35  La fonction Remove supprime un fichier sans demander de confirmation prototype : int remove(const char* fichier);