Bonjour à tous,
je vais aborder une matière assez simple à expliquer et à comprendre. La gestion des fichiers.
Alors dans ce tuto je vais vous expliquer comment ouvrire un fichier, le gerer, écrire dedans et le fermer.
voila je vais tenter de vous expliquer le mieu possible cette matière assez simple en C.
fopen comme sont nom l'indique sert à "ouvrire". Cette fonction se trouve dans la bibliothèque : stdio.h
Et voici sa synthaxe :
FILE *fopen (const char *path, const char *mode);
Sont utilisation est assez simple. exemple :
void fonction (void)
{
FILE *test = NULL; //On initialise le pointeur
test = fopen("mon fichier.txt","r+"); //on utilise fopen
}
Analyson :
On initalise le pointeur test (pointe sur FILE), et on se sert du pointeur pour utiliser la fonction fopen. dans le 1er champs j'ai indiqué le nom du fichier à ouvrire. Et vous pouvez aussi remarquer que j'ai mis en 2e champ "r+"
Cela signifie que le fichier va se lancer en lecture et ecriture en placan le curseur au debut.
Voici la liste :
r : "r" signifie read = lire. le fichier va donc ce lancer en mode lecture et le curseur sera placé au debut du fichier.
r+ : c'est pareil que dans l'exemple , il va etre lancer en lecture et ecriture en placan le curseur au debut.
w :Fichier sera ouvert en mode écriture. Si le fichier existe pas il sera créer parcontre si il existe le contenue sera écrasé. Le curseur ce place au debut du fichier
w+ : Pareil sauf que il se lancera en lecture et écriture
a: Le fichier sera ouvert de sorte que vous puissiez ajouter du texte. Donc le curseur sera placéa la fin
a+: Mode écriture et lecture. Si le fichier n'existe pas il sera créer, le curseur sera placé au debut mais si vous ajouté du texte il s'affichera toujours a la fin
Voila C'est simple non ? Allez on va un petit peut améliorer le code :
void fonction (void)
{
FILE *test = NULL;
test = fopen("mon fichier.txt", "r");
if (test == NULL)
{
printf("Fichier ne peut pas etre ouvert, il va etre créer !");
test = fopen("mon fichier.txt", "w+");
if (fichier == NULL)
{
printf("Impossible de cree le fichier");
}
else
{
printf("fichier créer avec succes");
}
}
else
{
printf("fichier ouvert avec succes");
}
}
Voila ca me semble bon, sauf qu'il manque 1 truc : fclose ^^
fclose est une fonction aussi de "stdio.h" qui permet la fermeture du fichier.txt
sa synthaxe :
int fclose (FILE *fp);
et s'utilise ainsi :
fclose (nom du pointeur de FILE);
Reprenons l'exemple pour completer le code :
void fonction (void)
{
FILE *test = NULL;
test = fopen("mon fichier.txt", "r");
if (test == NULL)
{
printf("Fichier ne peut pas etre ouvert, il va etre créer !");
test = fopen("mon fichier.txt", "w+");
if (fichier == NULL)
{
printf("Impossible de cree le fichier");
}
else
{
printf("fichier créer avec succes");
fclose(test);
}
}
else
{
printf("fichier ouvert avec succes");
fclose(test);
}
}
Maintenant j'en viens àfprintf qui est très utile notamment pour faire des fichiers logs pour vos programmes.
Voici son prototype :
int fprintf (FILE *stream, const char *format);
Son utilisation :
void fonction ()
{
FILE *a = fopen("fichier.txt","w+" //ouverture du fichier en mode lecture et écriture
fprintf(a,"Voila j'écris ma première phrase dans mon fichier.txt");
fclose(a); // je ferme le fichier
}
Je pense que c'est assez claire, en effet je déclare un pointeur "a" de type FILE ensuite je l'initialise avec fopen, je donne le nom du fichier + extension du fichier pour le 1er argument et pour le deuxième argument il s'agit de l'indicateur de type d'ouverture vu précédemment dans le cours ;)
Pour le texte j'utilise donc fprintf qui va prendre en 1er paramètre le nom du pointeur qui est initialisé avec fopen et en deuxième paramètre le texte qui va être imprimé dans le fichier.
Je ferme avec fclose en lui mettant comme seul paramètre le nom du fichier initialisé avec fopen.
Voila le tuto se termine normalement après l'avoir lu vous êtes capable de gerer voir créer n'importe quel fichier pour vos programmes.
j'espere que vous avez tout compris et dans le cas contraire si vous avez la moindre question je vous invites à aller rejoindre le forum.
Cordialement