Vous êtes sur la page 1sur 6

open : ouverture du fichier FILE* fopen(const char* nomDuFichier, const char* modeOuverture); Cette fonction attend deux paramtres :

le nom du fichier ouvrir ; le mode d'ouverture du fichier, c'est--dire une indication qui mentionne ce que vous voulez faire : seulement crire dans le fichier, seulement le lire, ou les deux la fois.

Voici les modes d'ouverture possibles.

"r" : lecture seule. Vous pourrez lire le contenu du fichier, mais pas y crire. Le fichier doit avoir t cr au pralable. "w" : criture seule. Vous pourrez crire dans le fichier, mais pas lire son contenu. Si le fichier n'existe pas, il sera cr. "a" : mode d'ajout. Vous crirez dans le fichier, en partant de la fin du fichier. Vous ajouterez donc du texte la fin du fichier. Si le fichier n'existe pas, il sera cr. "r+" : lecture et criture. Vous pourrez lire et crire dans le fichier. Le fichier doit avoir t cr au pralable. "w+" : lecture et criture, avec suppression du contenu au pralable. Le fichier est donc d'abord vid de son contenu, vous pouvez y crire, et le lire ensuite. Si le fichier n'existe pas, il sera cr. "a+" : ajout en lecture / criture la fin. Vous crivez et lisez du texte partir de la fin du fichier. Si le fichier n'existe pas, il sera cr. Example : int main(int argc, char *argv[]) { FILE* fichier = NULL; fichier = fopen("test.txt", "r+"); return 0; }

1.

Fermeture dun fichier :

La fonction fclose permet de former un fichier selon son nom de pointeur : fclose(Nom_Pointeur) ;

2. Lecture & Ecriture dans un fichier texte :


crire dans le fichier Il existe plusieurs fonctions capables d'crire dans un fichier. Ce sera vous de choisir celle qui est la plus adapte votre cas. Voici les trois fonctions que nous allons tudier :

fputc : crit un caractre dans le fichier (UN SEUL caractre la fois) ; fputs : crit une chane dans le fichier ; fprintf : crit une chane formate dans le fichier, fonctionnement quasi-identique printf.

fputc
Cette fonction crit un caractre la fois dans le fichier. Son prototype est : int fputc(int caractere, FILE* pointeurSurFichier); Elle prend deux paramtres.

Le caractre crire (de type int, ce qui comme je vous l'ai dit revient plus ou moins utiliser un char, sauf que le nombre de caractres utilisables est ici plus grand). Vous pouvez donc crire directement 'A' par exemple. Le pointeur sur le fichier dans lequel crire. Dans notre exemple, notre pointeur s'appellefichier. L'avantage de demander le pointeur de fichier chaque fois, c'est que vous pouvez ouvrir plusieurs fichiers en mme temps et donc lire et crire dans chacun de ces fichiers. Vous n'tes pas limits un seul fichier ouvert la fois. La fonction retourne un int, c'est un code d'erreur. Cet int vaut EOF si l'criture a chou, sinon il a une autre valeur.

fputs
Cette fonction est trs similaire fputc, la diffrence prs qu'elle crit tout une chane, ce qui est en gnral plus pratique que d'crire caractre par caractre. Cela dit, fputc reste utile lorsque vous devez crire caractre par caractre, ce qui arrive frquemment. Prototype de la fonction : char* fputs(const char* chaine, FILE* pointeurSurFichier); Les deux paramtres sont faciles comprendre.

chaine : la chane crire. Notez que le type ici est const char* : en ajoutant le mot const dans le prototype, la fonction indique que pour elle la chane sera considre comme une constante. En un mot comme en cent : elle s'interdit de modifier le contenu de votre chane. C'est logique quand on y pense : fputs doit juste lire votre chane, pas la

modifier. C'est donc pour vous une information (et une scurit) comme quoi votre chane ne subira pas de modification.

pointeurSurFichier : comme pour fputc, il s'agit de votre pointeur de type FILE* sur le fichier que vous avez ouvert. La fonction renvoie EOF s'il y a eu une erreur, sinon c'est que cela a fonctionn. L non plus, je ne teste en gnral pas la valeur de retour.

Fprintf
fprintf(Nom_pointeur_fichier, chaineDeCaractre,variables_expressions);

Voici un autre exemplaire de la fonction printf. Celle-ci peut tre utilise pour crire dans un fichier. Elle s'utilise de la mme manire que printf d'ailleurs, except le fait que vous devez indiquer un pointeur de FILE en premier paramtre. Ce code demande l'ge de l'utilisateur et l'crit dans le fichier (rsultat fig. suivante) : Exemple : int main(int argc, char *argv[]) { FILE* fichier = NULL; int age = 0; fichier = fopen("test.txt", "w"); if (fichier != NULL) { // On demande l'ge printf("Quel age avez-vous ? "); scanf("%d", &age); // On l'crit dans le fichier fprintf(fichier, "Le Monsieur qui utilise le programme, il a %d ans", age); fclose(fichier); } return 0; }

Lire dans un fichier text


Nous pouvons utiliser quasiment les mmes fonctions que pour l'criture, le nom change juste un petit peu :

fgetc : lit un caractre ; fgets : lit une chane ; fscanf : lit une chane formate.

fgetc
Tout d'abord le prototype : int fgetc(FILE* pointeurDeFichier); Cette fonction retourne un int : c'est le caractre qui a t lu. Si la fonction n'a pas pu lire de caractre, elle retourne EOF.

fgets
Cette fonction lit une chane dans le fichier. a vous vite d'avoir lire tous les caractres un par un. La fonction lit au maximum une ligne (elle s'arrte au premier qu'elle rencontre). Si vous voulez lire plusieurs lignes, il faudra faire une boucle. Voici le prototype de fgets : char* fgets(char* chaine, int nbreDeCaracteresALire, FILE* pointeurSurFichier);

fscanf
fscanf(Nom_pointeur, ChaineDeCaractre,adresses_variables);

C'est le mme principe que la fonction scanf, l encore. Cette fonction lit dans un fichier qui doit avoir t crit d'une manire prcise. Supposons que votre fichier contienne trois nombres spars par un espace, qui sont par exemple les trois plus hauts scores obtenus votre jeu : 15 20 30. Vous voudriez rcuprer chacun de ces nombres dans une variable de type int. La fonction fscanf va vous permettre de faire a rapidement. Exemple : int main(int argc, char *argv[]) { FILE* fichier = NULL; int score[3] = {0}; // Tableau des 3 meilleurs scores fichier = fopen("test.txt", "r"); if (fichier != NULL) { fscanf(fichier, "%d %d %d", &score[0], &score[1], &score[2]); printf("Les meilleurs scores sont : %d, %d et %d", score[0], score[1], score[2]); fclose(fichier); } return 0; }

Se dplacer dans un fichier

Il existe trois fonctions connatre :


ftell : indique quelle position vous tes actuellement dans le fichier ; fseek : positionne le curseur un endroit prcis ; rewind : remet le curseur au dbut du fichier (c'est quivalent demander la fonction fseekde positionner le curseur au dbut).

ftell : position dans le fichier Cette fonction est trs simple utiliser. Elle renvoie la position actuelle du curseur sous la forme d'unlong : ftell(FILE* pointeurSurFichier);

fseek : se positionner dans le fichier


Permet de se positionner dans un emplacement quelconque dans le fichier selon les paramtres : fseek(Nom_pointeur_fichier , longueur_deplacement , emplacement_origine) ; 0 ou SEEK_SET : indique le dbut du fichier ; 1 ou SEEK_CUR : indique la position actuelle du curseur ; 2 ou SEEK_END : indique la fin du fichier.

rewind : retour au dbut


Cette fonction est quivalente utiliser fseek pour nous renvoyer la position 0 dans le fichier. void rewind(FILE* pointeurSurFichier);

La Lecture & lcriture dans un fichier binaire :


fwrite :
fwrite sert crire sur un fichier binaire. size_t fwrite (const void *ptr, size_t size, size_t nmemb, FILE *stream); ptr pointeur sur le premier octet de la liste d'objets inscrire. size L'espace mmoire pris par un membre de la liste d'objets inscrire. nmemb Le nombre de membres ayant la taille size dans la liste d'objets inscrire. stream Pointeur sur le flux (pointeur sur FILE dans notre cas). Valeur retourne La fonction fwrite retourne le nombre d'lments qu'elle a russi inscrire correctement dans le flux point par stream.

fread : cest pour lire dun fichier binaire. Fread(adresse_variable_reception,taille_octet,Nombre_fois,Nom_pointeur_fichier) ;

Vous aimerez peut-être aussi