Chapitre08 LC PDF
Chapitre08 LC PDF
Chapitre08 LC PDF
Solution
Pour résoudre ce problème, il faut :
Enregistrer les données de l’utilisateur
Vérifier les données disponibles
Afficher le menu ou le message d’erreur
Pour enregistrer des données de manière permanente, on utilise les fichiers.
Introduction
Un fichier est un ensemble de données stockées en général sur un support
externe. Un fichier structuré contient une suite d’enregistrements homogène, qui
regroupe le plus souvent plusieurs composants appartenant à un ensemble
(champs). Dans un fichier séquentiel, les enregistrements sont mémorisés
consécutivement dans l’ordre de leur entrée et ne peuvent être lus que dans cet
ordre. Si on a besoin d’un enregistrement précis, il faut lire tous les
enregistrements qui le précédent.
On peut choisir entre deux modes d’accès :
➢ Fichier binaire : chaque information est stockée selon les règles de
codage imposées par son type. Les données ne peuvent être lues ou écrites que
par un programme. La taille du fichier est alors optimale et les données sont
facilement lues ou écrites en peu d’instructions.
➢ Fichier texte : chaque information est sous la forme d’une succession de
code ASCII. Les données du fichier peuvent être crées ou consultées à l’aide
d’un éditeur de texte ou d’un programme. Les fichiers textes sont délicats et plus
long à lire.
Quel que soit le mode d’accès envisagé (binaire ou texte), on suit toujours la
même procédure :
- Ouvrir le fichier
Ingénieur Informaticien/Formateur
Analyste, Concepteur et Développeur d'Application
dl7781775@gmail.com
LANGAGE C
La valeur retournée par fopen est un flot de données (le pointeur de type FILE).
Si l’exécution de cette fonction ne se déroule pas normalement, alors la valeur
retournée est le pointeur NULL.
Les différents modes d’accès sont les suivants :
Mode Signification
r Ouverture d’un fichier texte en Lecture
w Ouverture d’un fichier texte en Ecriture
Ouverture d’un fichier texte en Écriture
a
à la fin
Ouverture d’un fichier binaire en
rb
Lecture
Ingénieur Informaticien/Formateur
Analyste, Concepteur et Développeur d'Application
dl7781775@gmail.com
LANGAGE C
Remarque :
Si le mode d’ouverture 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 existait, son ancien contenu serait écrasé.
Si le mode contient la lettre a, le fichier peut ne pas exister, dans ce cas il sera
créé. Sinon les nouvelles informations seront ajoutées à la fin de son contenu.
fclose (flot) ;
Cette fonction permet de fermer le flot de données qui a été associé à un fichier
par la fonction fopen. Elle retourne 0 si le fichier s’est fermé normalement.
4. Les Entrées/Sorties Formatées
Ingénieur Informaticien/Formateur
Analyste, Concepteur et Développeur d'Application
dl7781775@gmail.com
LANGAGE C
Ingénieur Informaticien/Formateur
Analyste, Concepteur et Développeur d'Application
dl7781775@gmail.com
LANGAGE C
Ingénieur Informaticien/Formateur
Analyste, Concepteur et Développeur d'Application
dl7781775@gmail.com
LANGAGE C
Main()
Fgetc (flot)
Fputc (caractère, flot)
fgets (chaine, nbre_car,flot);
fputs (chaine, flot);
{
FILE *f ; chaine text[100] ;
f = fopen (‘‘texte.txt’’, ‘’w’’);
if (f) {
puts (‘’Entrer une chaine : ‘’);
gets (text);
fputs (text, f);
fclose(f);
}
else {
puts (‘’erreur!!!’’);
}
}
#include <stdio.h>
main ()
{
FILE *f;
chaine text [100];
f = fopen (‘‘texte.txt’’,‘’r’’);
if (f) {
fgets (text, 100, f);
printf ("%s", text fclose(f);
} else {
puts(‘’erreur!!!’’);
}
}
Ingénieur Informaticien/Formateur
Analyste, Concepteur et Développeur d'Application
dl7781775@gmail.com
LANGAGE C
8. ftell – fseek
ftell renvoie la position de la tête d’écriture dans un fichier
fseek permet de lire un bloc dans le fichier de par sa
position
fseek (flot, nbre_bloc, position);
Position:
- SEEK_SET : renvoie 0 ; le début du fichier
- SEEK_CUR : renvoie 1 ; la position actuelle du curseur
- SEEK_END : renvoie 2 ; à la fin du fichier
Ingénieur Informaticien/Formateur
Analyste, Concepteur et Développeur d'Application
dl7781775@gmail.com