17.2.2 Ouverture d'un fichier

Icône de l'outil pédagogique Ouverture d'un fichier

On va demander au programme d'associer le pointeur de fichier défini précédemment à un fichier physique. Pour cela, il faut indiquer le nom du fichier (tel qu'il apparaît sur le support physique), le mode d'accès choisi (binaire ou texte), et la nature du travail qu'on désire faire avec le fichier (lecture, écriture). Ces informations sont fournies à la fonction fopen, qui va ouvrir le fichier et renvoyer la valeur à ranger dans le pointeur de fichier.

Voici un exemple d'utilisation (incomplet) de fopen pour ouvrir en écriture binaire (wb= Write Binary) le fichier binaire donnees.dat et associer à ce fichier le pointeur de fichier fic :

fic = fopen( "donnees.dat", "wb" ) ; /* le fichier est créé ou écrasé s'il existe */

Le prototype de fopen est :

FILE* fopen( char* filename, char* mode) ;

filename est le nom physique du fichier, chemin éventuellement inclus. Par exemple, "data.txt" ou "c:\ \tmp\ \data.txt". Notez le \\ dans le chemin !

mode est une chaîne de 2 ou 3 caractères (par exemple, "wb" ou "rt"), qui indique le mode d'accès choisi et le type de travail possible, choisis parmi :

- r (Read) : lecture seulement. Le curseur est positionné au début du fichier. Le fichier doit déjà exister

- w (Write) : écriture seulement. Le curseur est positionné au début du fichier. Celui‐ci est créé s'il n'existe pas, son ancien contenu est écrasé s'il existe ;

- a (Append) : écriture seulement. Le curseur est positionné à la fin du fichier. Celui‐ci est créé s'il n'existe pas. C'est le mode à utiliser pour compléter un fichier existant ;

- r+ : écriture et lecture. Le curseur est positionné au début du fichier. Le fichier doit déjà exister. Ce mode est peu utilisé.

- w+ : écriture et lecture. Le curseur est positionné au début du fichier. Le fichier est créé s'il n'existe pas, son ancien contenu est écrasé s'il existe. Ce mode est peu utilisé.

- a+ : écriture et lecture. Le curseur est positionné à la fin du fichier. Celui‐ci est créé s'il n'existe pas. Ce mode est peu utilisé.

- b (Binaire) ou t (Text) : cette lettre placée en deuxième position indique si le fichier doit être accédé en mode texte ou en mode binaire.

mode vaudra par exemple "wt" (fichier texte créé avec accès en écriture seulement) ou "a+b" (fichier binaire avec accès en lecture et écriture).

La fonction fopen retourne l'adresse de la structure FILE associée au fichier. Elle renvoie NULL si elle ne parvient pas à ouvrir le fichier.

Le test de la valeur renvoyée par fopen est indispensable pour prévenir les erreurs : fichier inexistant, support physique défectueux ou saturé, nombre excessif de fichiers ouverts...

 

Exemple 96 : Appel complet de la fonction fopen

fic = fopen( "data.txt", "rt" ); /*ouverture en lecture texte */
if (fic==NULL) { printf("Pb d'ouverture fichier !"); exit(0) ; }

 

Voici un exemple de création d'un fichier texte en écriture seulement (pour créer un fichier binaire, il suffit de remplacer "wt" par "wb" dans l'instruction fopen) :

 

Exemple 97 : Ouverture d'un fichier texte (création)

Télécharger avec le c