Académique Documents
Professionnel Documents
Culture Documents
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.
"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.
La fonction fclose permet de former un fichier selon son nom de pointeur : fclose(Nom_Pointeur) ;
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; }
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; }
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);