Vous êtes sur la page 1sur 41

Universit

Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

INTRODUCTION

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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.

les informations sont sauvegardes la suite les unes des autres


ne sont pas forcment de mme type (un char, un int, une
structure ...)

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Types d'accs
Gnralement deux types de fichiers sont employs

Fichiers Accs squentiel

Fichiers Accs direct

Laccs au contenu seffectue dans


l'ordre du stockage, cest
cest---dire
du premier au dernier en passant
par tous les enregistrements
intermdiaires..
intermdiaires
..

on peut directement accder


n'importe quel endroit du fichier
par l'adresse individuelle de
chaque enregistrement

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Codage dinformations
Deux faons de coder les informations
stockes dans un fichier

En Binaire

ce sont des fichiers structurs sous


forme d'enregistrements (struct en
langage C), dont le contenu doit
tre interprt par le programme
qui les a crs.
crs.

En ASCII

Ces fichiers sont


listables et ditables.

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Caractristiques dun fichier
Sur le support de sauvegarde, le fichier possde:

une extension

Nom proprement dit

Un fichier possde des attributs, cest dire des droits daccs :

lecture

criture

destruction

etc

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Oprations possibles avec les fichiers:








Cration
Ouverture
Lecture
Ecriture
Destruction
Renommer
Fermer.

La plupart des fonctions permettant la manipulation


des fichiers sont ranges dans la bibliothque standard
stdio..h.
stdio
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique

III. FICHIERS
Dclaration d'un fichier

23/02/2012

Toutes les fonctions de gestion des informations admettent comme


paramtre un pointeur sur la structure FILE dfinie dans stdio.h.:

Syntaxe:

FILE *

P_Nom;
majuscules obligatoires pour FILE

P_Nom est la variable qui permettra de manipuler le fichier dans le


programme.
Ce pointeur repre une cellule donne.

Le pointeur permet de se reprer dans le fichier. On accde une


information en amenant le pointeur sur sa position.
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Ouverture du fichier

Avant de pouvoir lire ou crire dans un fichier, il faut que celuicelui-ci


soit ouvert. Pour ouvrir un fichier on utilise la syntaxe suivante:

Syntaxe:

P_Nom = fopen ("nom_du_fichier.dat", "mode");

Il permet dassocier la variable P_Nom


P_Nom::
Nom logique (interne
(interne:: en mmoire
centrale) le nom physique (externe
(externe:: sur le
disque)..
disque)

Les modes
d'ouvertures des
fichiers

La valeur retourne par fopen est:


soit un flot de donnes ;
soit NULL si lexcution de cette fonction ne se droule
pas normalement.
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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:
}

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Diffrents modes utiliss pour les fichiers TEXTES :

"r" : ouverture du fichier en lecture seule


"w" : ouverture du fichier en criture seule (destruction de
l'ancienne version si elle existe)
"a" : Ajout denregistrement, ouverture du fichier et se
positionne en criture la fin du fichier.
"r+" : ouverture du fichier en mode mise jour (lecture/criture)
(fichier existant pas de cration d'une nouvelle version).
"w+" : cre un fichier en mode mise jour (lecture/criture)
(destruction de lancienne version si elle existe)
"a+" : lecture/criture d'un fichier existant (mise jour),
pas de cration d'une nouvelle version, le pointeur est
positionn la fin du fichier.
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique

III. FICHIERS
Diffrents modes utiliss pour les fichiers Binaires :
"rb" : lecture seule

23/02/2012

"wb"

: criture seule (destruction de l'ancienne version


si elle existe)
"wb+" : lecture/criture (destruction de lancienne version
si elle existe)
"rb+" : lecture/criture d'un fichier existant (mise jour),
pas de cration d'une nouvelle version.
"ab+" : lecture/criture d'un fichier existant (mise jour),
pas de cration d'une nouvelle version, le pointeur
est positionn la fin du fichier.
A louverture, le pointeur est positionn au dbut du fichier
(sauf "a+" et "ab+", la fin).
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Exemple
FILE * P_Nom ;
P_Nom = fopen("c :\
:\\travail.dat", "rb") ;

Ouverture dun fichier :


- nomm travail.dat
- se trouvant au rpertoire racine.
- mode binaire en lecture seule
FILE * P_Nom ;
char nom[30] ;
printf( "Nom du fichier : " );
gets(nom );
P_Nom = fopen(nom, "w") ;

Ouverture dun fichier :


- nom : saisit par lutilisateur
- mode texte en criture seule
(destruction de l'ancienne
version si elle existe)
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Fermeture:

On utilise la fonction de prototype int fclose(FILE *f);


Syntaxe:

fclose(P_Nom);

La fonction retourne 0 si la fermeture sest bien passe


et -1 si il y a eu une erreur.
Exemple:
FILE * P_Nom ;
P_Nom = fopen(
fopen(c :\
:\\travail.dat", "rb") ;

// Ici instructions de traitement


fclose(P_Nom) ;
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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);

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS

Destruction:
On utilise la fonction de prototype int remove(char *nom);
Syntaxe:

remove(" Nom_fichier") ;

La fonction retourne 0 si la destruction sest bien passe.


Exemple:

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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;
}

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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:

int ferror( FILE* file);


La fonction renvoie:
Une valeur diffrente de zro si une erreur est survenue
Une valeur gale zro si tout va bien
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Manipulations des fichiers textes
La fonction de prototype
int fputc(char c, FILE * P_Nom)

crit la valeur de c la position courante du pointeur, le pointeur


avance d'une case mmoire.
Elle retourne lentier correspondant au caractre crit
ou 1 en cas derreur.
Exemple :
fputc(A, P_Nom) ;

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Manipulations des fichiers textes
La fonction de prototype

int fgetc(FILE * P_Nom)


Permet de lire 1 caractre, et retourne son code ASCII, sous
forme dun entier. En cas derreur ou bien si la fin du fichier est
atteinte, elle retourne la valeur 1 (EOF).

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Exemple:

Manipulations des fichiers textes

#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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Manipulations des fichiers textes

int fgets(char * chaine, int n, FILE * flux);


Cette fonction lit n-1 caractres partir de la position du pointeur ou
bien jusqu'au caractre '\n', s'il survient avant les n-1 caractres et
les range dans chane en ajoutant '\0'. La valeur de retour est NULL
sil y a un chec en lecture ou bien si la fin du fichier est atteinte.
ATTENTION : la rencontre de '\n', il y arrt, mais cet '\n' est
copi comme un autre caractre dans la chaine.
Exemple :
char chaine[10];
Si l'enregistrement est : trois\n
fgets(chaine, 10, flux);
chaine' sera compos de : trois\n\0???
Astuce : on met l'\0 la place de l'\n par une
commande facile comprendre.
chaine [ strlen(chaine) 1 ] = '\0';
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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) ;

Khalid SBAI Cours dinformatique

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");

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Manipulations des fichiers binaires
Ecriture

int fwrite(void *p, int taille_bloc, int nb_bloc, FILE *P_Nom)


crit, partir de la position courante du pointeur P_Nom, nb_bloc
fois taille_bloc octets lus partir de l'adresse p. Le pointeur fichier
avance d'autant.
ou

fwrite(&variable, sizeof(variable), 1, flux);

Cette fonction retourne le nombre de blocs crits (0 en cas


derreur, ou bien si la fin du fichier est atteinte).
Exemple :
taille_bloc = 4
(entier cod sur 4 octets),
nb_bloc=3,
criture de 3 entiers.
int tab[10] ;
fwrite(tab,4,3, P_Nom) ;
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Manipulations des fichiers binaires
Lecture
Elle est analogue fwrite en lecture.

int fread(void *p, int taille_bloc, int nb_bloc, FILE * P_Nom)


Cette fonction retourne le nombre de blocs luts
(0 en cas derreur, ou bien si la fin du fichier est atteinte).

L'astuce pour la lecture est identique l'criture.

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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);
}

// entree.dat est compos d'un entier


// par enregistrement

fclose(p_entree);
fclose(p_sortie);

p_sortie = fopen("sortie.dat", "wb");


}
fread(&donnee, sizeof(donnee), 1, p_entree);
// lecture initiale
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

III. FICHIERS

Exemple 2:

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

Manipulations des fichiers binaires


#include <stdio.h>
#include <stdlib.h>
#define NB 50
#define F_SORTIE "sortie.txt"
int main(void) {
FILE *f_in, *f_out;
int *tab1, *tab2;
int i;
// allocation memoire des tableaux
tab1 = (int*)malloc(NB * sizeof(int));
tab2 = (int*)malloc(NB * sizeof(int));
for (i = 0 ; i < NB; i++)
tab1[i] = i;
/* ecriture du tableau dans F_SORTIE */
if ((f_out = fopen(F_SORTIE, "wb")) == NULL) {
printf("\nImpossible decrire dans %s\n",F_SORTIE);
exit(0);
}
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Manipulations des fichiers binaires

Exemple 2:
(suite)

fwrite(tab1, NB * sizeof(int), 1, f_out);


fclose(f_out);
/* lecture dans F_SORTIE */
if ((f_in = fopen(F_SORTIE, "rb")) == NULL) {
printf("\nImpossible de lire dans %s\n",F_SORTIE);
exit(0);
}
fread(tab2, NB * sizeof(int), 1, f_in);
fclose(f_in);
for (i = 0 ; i < NB; i++)
printf("%d\t",tab2[i]);
printf("\n");
return(EXIT_SUCCESS);
}
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique

III. FICHIERS
Positionnement du pointeur au dbut du fichier:

23/02/2012

On utilise la fonction de prototype :


void rewind(FILE *f);
Syntaxe:
rewind (P_Nom) ;
Elle est quivalente :

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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

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

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS
Fonction particulire aux fichiers acces direct:

la fonction de prototype :
long ftell(FILE *P_Nom);

retourne la position courante dans le fichier (en


nombre doctets depuis lorigine).

Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

III. FICHIERS
Exemple :

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

#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

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

III. FICHIERS

Exemple : (suite)

fwrite(tab, NB * sizeof(int), 1, f_out);


fclose(f_out);
/* lecture dans F_SORTIE */
if ((f_in = fopen(F_SORTIE, "rb")) == NULL)
{ printf("Impossible de lire dans %s\n",F_SORTIE);
exit(0);
}
/* on se positionne a la fin du fichier */
/* deplacement de 5 int en avant */
fseek(f_in, 0, 2);
fseek(f_in, 5 * sizeof(int), 1);
printf("\n position %ld", ftell(f_in));
printf("\n position %ld", ftell(f_in));
/* deplacement de 10 int en arriere */
fread(&i, sizeof(i), 1, f_in);
fseek(f_in, -10 * sizeof(int), 2);
printf("\t i = %d\n", i);
printf("\n position %ld", ftell(f_in));
fclose(f_in);
fread(&i, sizeof(i), 1, f_in);
return(0);
printf("\t i = %d", i);
}
/* retour au debut du fichier */
rewind(f_in);
Lexcution de ce programme affiche lcran :
printf("\n position %ld", ftell(f_in));
position 100
fread(&i, sizeof(i), 1, f_in);
position 80 i = 40
printf("\t i = %d", i);
position 0 i = 0
position 12 i = 6
Khalid SBAI Cours dinformatique

Universit
Moulay Ismal

Ecole suprieure de Technologie


Dpartement de Gnie Electrique
23/02/2012

FIN

Khalid SBAI Cours dinformatique

Vous aimerez peut-être aussi