Lire un fichier en C avec fgetc

Nous allons au travers de ce tutoriel expliquer comment programmer en C  la lecture d’un fichier texte. Nous expliquerons chaque ligne de code ajoutée afin d’arriver à un programme fonctionnel.

Tout d’abord, afin de faire des opérations d’entrées sorties, commençons par inclure le fichier d’entête stdio.h (Standard Input/Ouuput Header).

Tout programme écrit en C doit contenir une fonction principale appelée main, c’est à partir de cette dernière que débute un programme.

Comme vous pouvez le voir ci-dessus, à la ligne 3, le mot clé int précède la fonction main pour indiquer que cette dernière retourne un entier.

Nous ajoutons la primitive return à la fin de notre fonction afin de retourner une valeur.

Habituellement un programme retourne 1 en cas d’erreur sinon 0. Considérons que si notre programme arrive à la fin de la fonction main c’est qu’il n’y a pas eu d’erreur.

Afin de pouvoir lire notre fichier nous avons besoin du pointeur de fichier :

FILE* pFichier

Pour stocker les caractères nous utilisons la variable (type entier) :

int c

Nous ouvrons le fichier avec la fonction fopen qui retourne un pointeur sur le fichier. En cas d’échec elle retourne NULL.

La valeur de retour de la fonction fopen est utilisée afin d’initialiser notre pointeur pFichier .

La fonction fopen attend deux paramètres qui sont respectivement, le nom du fichier et mode d’ouverture.

Nous ouvrons un fichier nommé fichier.txt et utilisons le mode d’ouverture « r » pour read (accès en lecture).

Si un echec a eu lieu lors de l’ouverture du fichier, le pointeur pFichier est égal à NULL, dans ce cas nous affichons un message d’erreur à l’aide de la fonction  perror.

La fonction fgetc lit le fichier et retourne le caractère courant, la position dans le fichier est modifiée.

Affichons sur la sortie standard le caractère lu à l’aide de la fonction printf. Nous indiquons que nous souhaitons afficher un caractère avec %c et nous lui fournissons le caractère à afficher c en paramètre.

Notre programme n’est pas encore fini, il lit pour l’instant que le premier caractère du fichier avant de se terminer.

Implémentons une boucle afin d’appeler la fonction fgetc tant que des caractères sont présents. Nous pouvons savoir lorsque nous sommes à la fin du fichier grâce à la fonction fgetc qui retournera dans ce cas EOF.

Ajoutons une boucle infinie while depuis laquelle nous sortirons si le caractère EOF est détecté.

Si le caractère courant est égal à EOF (End Of File – Fin du fichier) nous sortons de la boucle  à l’aide de l’instruction break .

Ajoutons l’instruction fclose afin de fermer correctement le fichier une fois la lecture terminée.