L'entrée/sortie avec C est effectuée à l'aide de la bibliothèque standard. Selon le critère, les types d'entrées/sorties suivants peuvent être distingués :
Les fonctions scanf et print vues jusqu'à présent fonctionnent avec des fichiers standard, formatés et accessibles séquentiellement.
Les fichiers standard traités par C sont trois : stdin pour entrée, stdout pour sortie et stob pour messages d'erreur. Ces fichiers sont fournis par le système d'exploitation (ouvert) au programme principal pour une utilisation directe. Les fichiers standard sont par défaut le clavier et l'écran, mais peuvent être redirigés par le système d'exploitation. Les caractères alphabétiques et unix et deux sont utilisés pour cela. Les fonctions scanf et print mentionnées dans la bibliothèque C sont de plus en plus importantes pour travailler avec des fichiers standard d'entrée/sortie : getchar, putchar, gets et puts. Les lignes planes sont sans format et tandis que les deux premières lisent ou écrivent un seul caractère, les autres manipulent une ligne complète. Sa gestion se trouve dans le fichier stdio.h, ainsi que les autres fonctions d'entrée/sortie, et sont les suivantes :
extern int getchar ( );extern int putchar (int);extern char * gets (char*);extern int puts (char*);
Dans les programmes 1 et 2, vous pouvez voir comment utiliser les fonctions getc et gets. Dans les deux exemples, la fonction lit une ligne et calcule la longueur de la ligne.
Le concept de fichier pour C est général car il comprend aussi bien les dispositifs (clavier, écran, imprimante, ...) que les fichiers de la mémoire auxiliaire (disques, disquettes, bandes, ...).
Comme dans d'autres langages, ce fichier doit être ouvert pour que les informations de contrôle correspondantes soient chargées en mémoire et consultées par les fonctions de base d'entrée/sortie du système d'exploitation. Cette information de contrôle est stockée dans une structure appelée FILE (définie dans le fichier stdio.h) lorsque le fichier est ouvert et que nous l'utiliserons avec un pointeur, car en appelant les fonctions sur un fichier, la référence de sa structure FILE doit être mentionnée comme argument.
Par conséquent, pour l'utilisation des fichiers, une variable du type FILE * sera définie dans les programmes C pour qu'en les ouvrant (avec la fonction des fops) il reçoive le résultat et puisse être utilisé comme paramètre dans les autres fonctions d'entrée/sortie.
Dans le tableau 1, une liste des fonctions d'entrée/sortie gérant la structure FILE s'affiche, dans laquelle le type de données du paramètre et le résultat sont affichés comme une brève explication.
Toutes les fonctions décrites dans le tableau 1, sauf le fseek, sont utilisées en accès séquentiel sur un fichier ouvert en permanence pour la gestion des caractères (fgetc, fputc), lignes (fgets, fputs), enregistrements (fread, fwrite) ou situations spéciales (feof, ferror). Si stdin ou stdout est déterminé où fp doit être placé, la fonction est exécutée sur l'entrée ou la sortie standard.
Les lectures et les écritures sont faites dans la position actuelle, initialisant cette position avec la fonction fopen et la mettant à jour dans chaque capture. En fonction du paramètre de la fonction fops, en plus de sélectionner la position actuelle, les opérations qui peuvent être effectuées sont définies, comme le montre le tableau 2.
Tableau . Fonctions d'entrée/sortie.Le Programme 3 utilise les fonctions E/S pour la rédaction du programme cat utilisé dans UNIX. Ce programme enregistre les fichiers qui passent comme argument, l'un après l'autre dans la sortie standard. Les arguments sont traités par les variables argc et argv, comme nous l'avons vu au chapitre 10.
Comme on l'a vu dans les exemples, les fonctions d'E/S de base de la bibliothèque (fgetc, fputc, freda, fwrite, ...) facilitent l'accès séquentiel, car en ouvrant le fichier ils utilisent et actualisent sa position actuelle.
Pour effectuer un accès direct, les fonctions mentionnées doivent être combinées avec le FSE, qui permet de se placer dans une position donnée. Les paramètres de la fonction fseek sont le descripteur du fichier (type FILE *), le défilement et le mode. On distingue trois formes, chacune choisissant un point différent pour appliquer le déplacement. Sélectionnez le début du fichier SEEK_SET, la position actuelle SEEK_CUR et la fin du fichier SEEK_END.
Le Programme 4 définit la fonction « correctoâ » qui lit ou écrit un champ de longueur fixe situé à une position déterminée selon un paramètre.
Il peut également aider la fonction ftell, qui nous renvoie la position courante dans le raccourci. En voyant comment l'aide de recherche que les éditeurs ont programmée dans le programme 5, nous avons un exemple d'utilisation de la fonction ftell.