Ce fichier contient tout ce qui est nécessaire
aux entrées-sorties. Il est quasiment toujours inclus dans les programmes en C.
Il contient les fonctions nécessaires :
La fonction :
Exemples : si n vaut 4 et que, à partir de la position courante dans Fichier, on trouve ou\n, chaine contiendra ou\n\0. Si dans le fichier il
y a oui\n, chaine contiendra oui\0 et s'il y a bien\n, chaine contiendra bie\0.
La fonction :
La variable contenant l'adresse retournée par la fonction fopen sera appelée "nom interne du fichier".
Lorsqu'on utilise un fichier, on peut imaginer qu'un curseur est positionné au fur et à mesure dans ce fichier. Avec le mode "r", le curseur est positionné à l'ouverture au début du fichier. Si on veut lire un entier, le curseur passe les espaces s'il y en a, lit les caractères jusqu'à rencontrer le prochain
espace sur lequel il restera positionné jusqu'à la prochaine demande de lecture. L'ensemble des caractères lus est converti en un entier.
La fonction fscanf retourne EOF si la fin de fichier est atteinte ou si une erreur se produit avant toute conversion ; sinon, elle retourne le nombre d'octets convertis et affectés.
La fonction :
La fonction
Considérons l'instruction :
Pour ceux qui connaissent les modes de passage des paramètres "par valeur"
ou "par adresse" (comme en Pascal), signalons que le langage C n'utilise que
le mode de passage par valeur ; donner à la fonction scanf un argument
(par valeur) qui soit une adresse revient à faire un passage par adresse.
La fonction fscanf retourne EOF si un caractère représentant une fin de fichier est rencontré ou si une erreur se produit avant toute conversion ; sinon, elle retourne le nombre d'octets convertis et affectés.
La fonction
La fonction
La fonction
La fonction
fopen
présente une similitude avec un "malloc". Lorsqu'elle est rencontrée,
une zone mémoire est allouée pour une variable de type FILE ; la fonction fopen retourne l'adresse de cette zone. Les deux paramètres de la fonction fopen indique :
Si on ajoute un b (comme par exemple "r+b"), il s'agit alors d'un fichier binaire.
fprintf
La fonction :
est l'équivalent dela fonction printf dans le cas où le fichier de sortie n'est plus le fichier standard.
Il suffit de l'utiliser comme la fonction printf en ajoutant, en premier paramètre, le nom interne du fichier de sortie.
La fonction retourne le nombre de caractères écrits, ou bien, en cas d'erreur, un entier négatif.
fscanf
La fonction :
ressemble beaucoup à la fonction scanf mais est appelée lorsque le fichier de lecture n'est pas le fichier d'entrée standard. On l'utilise de la même façon que la fonction scanf sauf que l'on doit ajouter le nom interne du fichier de lecture en premier paramètre.
fseek
La fonction
permet de se positionner dans le fichier indiqué.
formats d'impression
Si on désire écrire du texte et les valeurs d'un certain nombre de
variables à l'aide de la fonction "printf" de la bibliothèque
standard "stdio.h", la chaîne de caractères du printf va contenir, à la place où l'on désire voir insérée une valeur d'une variable, non pas le nom de cette
variable mais ce qu'on appelle un "indicateur de format" de la variable en
question. Ce format s'écrit sous la forme d'un % suivi d'une lettre représentant le type de la variable à écrire :
%d pour un entier signé
%u pour un entier non signé
%c pour un caractère (type char)
%s pour une chaîne de caractères
getc
La fonction :
retourne le caractère suivant lu dans le flot indiqué par le paramètre fichier ; si la fin de fichier est atteinte, elle retourne EOF.
Cette fonction à le même comportement que la fonction fgetc, mais est définie par une macro.
getchar
La fonction :
effectue getc(stdin).
gets
La fonction :
lit la ligne suivante à partir de l'entrée standard et la place dans le tableau chaine ; elle remplace le caractère de fin de ligne par '\o'. Elle retourne chaine, sauf si la fin du flot d'entrée est atteinte, auquel cas elle retourne NULL.
printf
sert à écrire
sur ce qu'on appelle la sortie standard. Par défaut, c'est-à-dire en l'absence
d'indication contraire, la sortie standard est l'écran.
Le premier argument que l'on donne à la fonction printf est toujours une chaîne de caractères .
Nous expliquons le fonctionnement de cette fonction à l'aide d'exemples.
Lorsque cette instruction est rencontrée, la fonction printf est chargée d'écrire sur la sortie standard le mot bonjour.
Donc résultat sur la sortie : bonjour
"en C,\nlorsqu'on l'utilise \"proprement\".\n");
Les guillemets en fin de ligne et en début de la ligne suivante permettent d'écrire une chaîne de caractères sur plusieurs lignes.
Résultat sur la sortie :
Qu'il est agreable d'ecrire un programme en C,
lorsqu'on l'utilise "proprement".
La fonction printf écrit aussi la chaîne de caractères "%d" mais elle remplace le groupe %d, appelé indicateur de format, par le premier paramètre situé après la virgule, c'est-à-dire le 3 ; le d de %d indique qu'il s'agit d'un entier.
donc résultat sur la sortie : 3
On suppose ici que nom est une chaîne de caractères qui contient "David", que hauteur est une variable de type int qui vaut 178 et poids une variable de type float qui vaut 64.5. La fonction printf interprète la chaîne de caractères en écrivant tous les caractères ordinaires et en remplaçant les indicateurs de format par les valeurs ou les valeurs des variables qui se trouvent derrière la virgule, en respectant l'ordre : au premier % correspond la première valeur indiquée, au deuxième % la deuxième valeur indiquée et ainsi de suite.
Donc résultat sur la sortie :
David mesure 178 cm et pese 64.500000 kg
où valeur1 et valeur2 sont deux variables de type int qui contiennent 3 et 125, et où valeur3 est une variable de type float contenant 7.54756 ; les indications numériques permettent de préciser la façon d'écrire les valeurs.
%5d : écrire la valeur correspondante comme une variable de type int écrite sur 5 positions en occupant les positions à partir de la droite.
%.3f : écrire la valeur correspondante comme une variable de type float avec 3 décimales, en arrondissant au plus près.
Donc résultat sur la sortie :
0000 3
00 125
  7.548
fputc
La fonction :
écrit caractere, convertit en unsigned char, dans fichier. Elle retourne aussi caractere, ou bien EOF en cas d'erreur.
putc
La fonction :
est identique à fputc, sauf qu'il s'agit d'une macro.
putchar
putchar(caractere) effectue putc(caractere, stdout).
puts
Si "chaine" est une chaîne de caractères, puts(chaine) écrit "chaine" sur stdout (c'est-à-dire, sauf instruction contraire, l'écran) et termine par un caractère de fin de ligne. La fonction retourne une valeur de type int qui vaut EOF en cas d'erreur et une valeur positive ou nulle sinon.
fputs
La fonction :
écrit chaine dans le fichier. Elle retourne EOF en cas d'erreur et une valeur positive ou nulle sinon.
scanf
sert à saisir des valeurs de variables à partir de l'entrée standard qui est, par défaut, fournie par le clavier.
Il s'agit de lire la valeur de la variable n.
La fonction scanf, pour saisir correctement une variable, doit connaître le type de la variable à saisir. Le fait que la variable n soit d'un type entier
est indiqué sur notre exemple en premier paramètre de la fonction scanf,
par la chaîne de caractères "%d" (d comme decimal). Cette chaîne s'appelle
"l'indicateur de format" ; s'il s'agissait d'un autre type défini par le langage, le d serait remplacé par une autre lettre.
Le second paramètre de la fonction scanf indique l'adresse de la variable
à saisir ; s'il s'agit comme sur notre exemple de la variable n, cette adresse est notée &n.
La fonction scanf "sait" ainsi où aller ranger en mémoire la valeur de la
variable lue.
sprintf
fonctionne comme la fonction fprintf, sauf que le texte est écrit dans la chaîne de caractères chaine au lieu d'être écrit dans un fichier, et qu'il est terminé par '\0'..
sscanf
fonctionne comme la fonction fscanf, sauf que le texte est lu dans la chaîne de caractères chaine au lieu d'être lu dans un fichier.
fclose
force l'écriture de données qui reste dans la mémoire-tampon du flot et ferme le fichier. Elle retourne zéro, sauf en cas d'erreur ou elle retourne EOF.
fflush
effectue l'écriture des données mises en mémoire tampon, si fichier est un fichier de sortie. Dans le cas d'un fichier d'entrée, l'effet est imprévisible.