Académique Documents
Professionnel Documents
Culture Documents
Cours C Partie 4 PDF
Cours C Partie 4 PDF
Moulay Ismal
Langage C
KHALID SBAI
Enseignant Chercheur
Ecole Suprieure de Technologie
Dpartement de Gnie Electrique
kh.sbai@yahoo.fr
Universit Moulay Ismal
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
INTRODUCTION
Universit
Moulay Ismal
III. FICHIERS
Dfinition dun fichier
Un fichier est un ensemble d'information code en
binaires (bits), dfinis par un identificateur au mme
titre quune variable et stocke sur un support de
mmoire non volatil: disque dur, disquette, bande
magntique, CD-ROM.
Universit
Moulay Ismal
III. FICHIERS
Types d'accs
Gnralement deux types de fichiers sont employs
Universit
Moulay Ismal
III. FICHIERS
Codage dinformations
Deux faons de coder les informations
stockes dans un fichier
En Binaire
En ASCII
Universit
Moulay Ismal
III. FICHIERS
Caractristiques dun fichier
Sur le support de sauvegarde, le fichier possde:
une extension
lecture
criture
destruction
etc
Universit
Moulay Ismal
III. FICHIERS
Oprations possibles avec les fichiers:
Cration
Ouverture
Lecture
Ecriture
Destruction
Renommer
Fermer.
Universit
Moulay Ismal
III. FICHIERS
Dclaration d'un fichier
23/02/2012
Syntaxe:
FILE *
P_Nom;
majuscules obligatoires pour FILE
Universit
Moulay Ismal
III. FICHIERS
Ouverture du fichier
Syntaxe:
Les modes
d'ouvertures des
fichiers
Universit
Moulay Ismal
III. FICHIERS
Ouverture du fichier
Exemple:
#include
include<
<stdio.h
stdio.h>
>
FILE fic;
char nom_fich
nom_fich[20];
[20];
main()
{
printf("donner
printf
("donner le nom du fichier :");
scanf("%s",
scanf
("%s",nom_fich
nom_fich);
);
fic = fopen(
fopen(nom_fich,
nom_fich, "r");
// ouvrir en lecture
return 0:
}
Universit
Moulay Ismal
III. FICHIERS
Diffrents modes utiliss pour les fichiers TEXTES :
Universit
Moulay Ismal
III. FICHIERS
Diffrents modes utiliss pour les fichiers Binaires :
"rb" : lecture seule
23/02/2012
"wb"
Universit
Moulay Ismal
III. FICHIERS
Exemple
FILE * P_Nom ;
P_Nom = fopen("c :\
:\\travail.dat", "rb") ;
Universit
Moulay Ismal
III. FICHIERS
Fermeture:
fclose(P_Nom);
Universit
Moulay Ismal
III. FICHIERS
Fermeture:
FILE fic;
char nom_fich[20];
nom_fich[20];
.
scanf("%s",
scanf
("%s",nom_fich
nom_fich);
);
fic = fopen(
fopen(nom_fich,
nom_fich, "r");
// ouvrir en lecture
if(fic == NULL)
{
printf("Impossible
printf
("Impossible d'ouvrir le fichier %s
%s\n", nom_fich
nom_fich);
);
exit(1);
}
else
printf("Ouverture
printf
("Ouverture du fichier %s est russie \n", nom_fich);
nom_fich);
.
if( fclose(
fclose(P_Nom)
P_Nom) )
{ printf("
printf("Probleme
Probleme de fermeture du fichier %s", nom_fich
nom_fich);
);
exit(0); }
else
printf("Fermeture
printf
("Fermeture du fichier %s est russie \n", nom_fich);
nom_fich);
Universit
Moulay Ismal
III. FICHIERS
Destruction:
On utilise la fonction de prototype int remove(char *nom);
Syntaxe:
remove(" Nom_fichier") ;
int x ;
x = remove("c :\
:\\travail.dat") ;
if (x == 0)
printf(Destruction OK : ") ;
printf(
else
printf(" Problme la destruction : ") ;
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Renommer:
On utilise la fonction de prototype :
int rename(char *oldname, char *newname);
Syntaxe:
rename("c :\\travail.dat", "c :\\user.dat") ;
La fonction retourne 0 si la modification de nom de fichier
sest bien passe.
Exemple:
int x ;
x = rename ("c :\\travail.dat", "c :\\user.dat");
if (x == 0)
printf( Operation OK : ") ;
else
printf( "Loperation sest mal passee : " );
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Fin de Fichier
int feof(FILE * P_Nom)
Retourne 0 tant que la fin du fichier nest pas atteinte
et -1 sinon.
utilisation dans une boucle :
lecture initiale;
while( ! feof(fic) )
{
lecture courante;
}
Universit
Moulay Ismal
III. FICHIERS
Dtecter les erreurs pendant la lecture
La fonction ferror permet de dtecter les erreurs
pendant la lecture des donnes dans un fichier :
PROTOTYPE:
Universit
Moulay Ismal
III. FICHIERS
Les entres-sorties formates
Manipulations des fichiers textes
Ecriture
Syntaxe:
int fprintf(P_Nom, "format", variable);
Exemple :
fprintf(P_Nom, "%d\n",compteur);
Remarque:
La valeur de retour est le nombre de valeurs
imprims. En plus du flux afficher, la fonction
ressemble trs fortement printf().
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers textes
Lecture
Syntaxe:
int fscanf(P_Nom,"format", &variable);
Exemple :
fscanf(P_Nom, "%d", &age);
Remarque:
La valeur de retour est le nombre d'information lue.
En plus du flux afficher, la fonction ressemble trs
fortement scanf().
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers textes
La fonction de prototype
int fputc(char c, FILE * P_Nom)
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers textes
La fonction de prototype
Universit
Moulay Ismal
III. FICHIERS
Exemple:
#include <stdio.h>
#include <stdlib.h>
#define ENTREE "entree.txt"
#define SORTIE "sortie.txt"
int main(void) {
FILE *f_in, *f_out;
int c;
// Ouverture du fichier ENTREE en lecture
if ((f_in = fopen(ENTREE,"r")) == NULL) {
printf("Impossible de lire %s\n",ENTREE);
exit(0); }
// Ouverture du fichier SORTIE en ecriture
if ((f_out = fopen(SORTIE,"w")) == NULL) {
printf("Impossible decrire dans %s\n",SORTIE);
exit(0);
}
Suite:
// Recopie du contenu de
// ENTREE dans SORTIE
while ((c = fgetc(f_in)) != EOF)
fputc(c, f_out);
// Fermeture des flots de
// donnees
fclose(f_in);
fclose(f_out);
return(0);
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers textes
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers textes
La fonction de prototype
int fputs(char *chane, FILE * P_Nom)
est analogue avec une chane de caractres.
Le pointeur avance de la longueur de la chane ('\0' n'est pas
rang dans le fichier).
La fonction retourne une valeur non ngative si tout s'est bien
pass et 1 en cas derreur (par exemple tentative dcriture
dans un fichier ouvert en lecture)
Exemple : fputs("BONJOUR ! ", index) ;
Universit
Moulay Ismal
III. FICHIERS
Exemple typique
pour la lecture
dun fichier texte
#include <stdio.h>
#define L_MAX 80
void main()
{
FILE* fichier;
char ligne[L_MAX];
fichier =
fopen(" essai.txt", "r");
if (fichier != NULL)
{
while (!feof(fichier))
{
fgets(ligne, L_MAX, fichier);
if (!ferror(fichier))
puts(ligne);
else
{
printf("Erreur lors de la lecture du fichier\n");
break;
}
}
fclose(fichier);
}
else
printf("Erreur lors de l'ouverture du fichier.\n");
getch();
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Exemple
typique pour
lcriture dun
fichier texte
#include <stdio.h>
int main()
{
FILE * fichier;
int i;
fichier = fopen("Essai.txt", "w");
if (fichier != NULL)
{
for (i = 0; i < 10; i++)
{
fprintf(fichier, "ligne %d\n", i);
if (ferror(fichier))
{
printf("Erreur lors de l'ecriture.\n");
break;
}
}
if (fclose(fichier))
printf("Le fichier n'a pas t correctement crit.\n");
}
else
printf("Erreur lors de l'ouverture du fichier.\n");
_getch();
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
MANIPULATIONS DES FICHIERS BINAIRES
Un fichier binaire est une copie conforme de la mmoire
centrale. Les informations numriques sont crites en
hexadcimal et le retour a la ligne prend une forme
particulire (ce n'est pas 2 caractres comme en mode
texte).
Les fonctions dentres-sorties binaires permettent de
transfrer des donnes dans un fichier sans transcodage.
Elles sont notamment utiles pour manipuler des donnes de
grande taille
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers binaires
Ecriture
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers binaires
Lecture
Elle est analogue fwrite en lecture.
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers binaires
Exemple 1:
#include <stdio.h>
void main()
{
int donnee;
int i = 0;
FILE * p_entree;
FILE * p_sortie;
p_entree = fopen("entree.dat", "rb");
while ( ! feof(p_entree) )
{
i++;
// ecriture
fwrite(&donnee, sizeof(donnee), 1, p_sortie);
// lecture courante
fread(&donnee, sizeof(donnee), 1, p_entree);
}
fclose(p_entree);
fclose(p_sortie);
Universit
Moulay Ismal
III. FICHIERS
Exemple 2:
Universit
Moulay Ismal
III. FICHIERS
Manipulations des fichiers binaires
Exemple 2:
(suite)
Universit
Moulay Ismal
III. FICHIERS
Fonction particulire aux fichiers acces direct:
La fonction de prototype:
int fseek(FILE *index , int offset , int direction);
Permet de se positionner dans un fichier et Dplace le
pointeur de offset octets partir de direction.
Valeurs possibles pour direction:
0 -> partir du dbut du fichier.
1 -> partir de la position courante du pointeur.
2 -> en arrire, partir de la fin du fichier.
Cette fonction retourne offset si la manipulation sest
bien passe , retourne 0 si le pointeur na pu tre dplac.
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Positionnement du pointeur au dbut du fichier:
23/02/2012
fseek(P_Nom, 0, 0)
Exemple:
FILE * P_Nom;
P_Nom = fopen("C:\\travail.dat", "rb") ; // pointeur au dbut
// ici traitement du fichier
rewind(P_Nom) ; // repositionne le pointeur au dbut
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Fonction particulire aux fichiers acces direct:
Exemple :
FILE *index ;
index = fopen("c :\\travail.dat", "rb") ; // pointeur au dbut
// ici manipulation du fichier
fseek(index, 5, 1) ; // dplace le pointeur de 5 position
// partir de la position courante du pointeur
Universit
Moulay Ismal
III. FICHIERS
Fonction particulire aux fichiers acces direct:
la fonction de prototype :
long ftell(FILE *P_Nom);
Universit
Moulay Ismal
III. FICHIERS
Exemple :
#include <stdio.h>
#include <stdlib.h>
#define NB 50
#define F_SORTIE "sortie.txt"
int main(void) {
FILE *f_in, *f_out;
int *tab;
int i;
// Initialisation du tableau
tab = (int*)malloc(NB * sizeof(int));
for (i = 0 ; i < NB; i++)
tab[i] = i;
/* ecriture du tableau dans F_SORTIE */
if ((f_out = fopen(F_SORTIE, "wb")) == NULL)
{
printf("Impossible decrire dans %s\n",F_SORTIE);
exit(0);
}
Khalid SBAI Cours dinformatique
Universit
Moulay Ismal
III. FICHIERS
Exemple : (suite)
Universit
Moulay Ismal
FIN