17.4. Entrées/sorties formatées en mode texte
Rappelons qu'un fichier texte peut être lu/écrit avec un éditeur (il est composé de caractères ASCII). Les exemples qui suivent vont montrer qu'un programme qui manipule un fichier en accès texte est plus délicat et plus long qu’en accès binaire. Au lieu d'une ligne fwrite qui mémorise dans le fichier tout un tableau d'un coup (quelle que soit sa taille et la nature de ses éléments), il faut écrire élément après élément, voire champ après champ si les éléments sont de type structuré. C'est le prix à payer pour disposer d'un fichier consultable directement par l'utilisateur au moyen d'un éditeur... Les fonctions d'entrées/sorties formatées dans un fichier sont identiques aux entrées/sorties conversationnelles à cette différence qu'elles possèdent un argument supplémentaire : le pointeur du fichier. La position de lecture/écriture est la position courante du « curseur » dans le fichier. Ce curseur de fichier (ainsi nommé par analogie avec l'écran) se déplace automatiquement lors d’une lecture ou écriture. Les principales fonctions disponibles sont les suivantes :
fgetc( fichier ); /* lecture d'un caractère */ Nous allons voir un exemple d'écriture/lecture avec fprintf/fscanf, puis un exemple de lecture avec fgets, plus simple et plus sûre.
On a toujours intérêt à ramener le problème de lecture de fichier à un problème de traitement de chaîne de caractères (pour lequel nous disposons de nombreuses fonctions de recherche). C'est le rôle de la fonction fgets. |