next up previous contents Next:  Lire des arguments en Up: Les bases du C. Previous:  Opérations sur les chaînes.   Table des matières  

23.1.7  Opérations sur les fichiers.

Dans de nombreux langages de programmation, les opérations relatives aux fichiers impliquent trois étapes: ouvrir, lire (et/ou écrire), fermer. Il est possible d'utiliser la commande fopen pour indiquer au système d'exploitation que vous êtes prêt à commencer un travail sur un fichier. Le code suivant ouvre un fichier et envoye son contenu à l'écran:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
 
int main (int argc, char *argv[]) 
{ 
    int c; 
    FILE *f; 
 
    f = fopen ("mytest.c", "r"); 
    if (f == 0) { 
        perror ("fopen"); 
        return 1; 
    } 
    for (;;) { 
        c = fgetc (f); 
        if (c == -1) 
            break; 
        printf ("%c", c); 
    }  
    fclose (f) 
    return 0; 
} 


FILE * constitue un nouveau type pour nous. Il s'agit d'une variable associée à des opérations, qui doit être initialisée avec fopen avant d'être utilisée. La fonction fopen prend deux arguments: le premier est le nom de fichier, le second est une chaîne expliquant le mode d'ouverture du fichier -en l'occurrence, r signifie reading (``en lecture depuis le début du fichier''). Une autre option courante est w pour writing (``en écriture''). D'autres options sont décrites dans fopen(3).

Si la valeur retournée par fopen est zéro, on dit que fopen a échoué. La fonction perror affiche alors un message littéral comme, par exemple, No such file or directory. Il est essentiel de vérifier la valeur de retour de tous les appels de bibliothèques selon cette méthode. Ces vérifications peuvent constituer jusqu'à environ un tiers de vos programmes en C.

La commande fgetc extrait un caractère du fichier. Elle récupère les octets consécutifs contenus dans le fichier jusqu'à ce qu'elle atteigne la fin de ce dernier. Elle renvoye alors le nombre -1. La déclaration break impose de terminer immédiatement la boucle for, pour reprendre le flot d'exécution à la ligne 21. Les déclarations break peuvent éventuellement apparaître à l'intérieur des boucles while.

Vous aurez noté que la déclaration for est vide; ce qui implique qu'il n'y a pas de conditions de boucle et, par conséquent, que celle-ci est infinie. Ceci est tout-à-fait admis en C. En l'occurrence, on n'en sort que par le break.

D'autres fonctions associées aux fichiers sont fread, fwrite, fputc, fprintf et fseek. Consultez fwrite(3), fputc(3), fprintf(3) et fseek(3).


next up previous contents Next:  Lire des arguments en Up: Les bases du C. Previous:  Opérations sur les chaînes.   Table des matières  
1-01-2006