Entrée et sortie en langage C
Entrée signifie fournir au programme certaines données à utiliser dans le programme et Sortie signifie afficher des données à l'écran ou les écrire sur une imprimante ou dans un fichier.
Le langage de programmation C offre de nombreuses fonctions intégrées permettant de lire une entrée donnée et d'afficher des données à l'écran lorsqu'il est nécessaire de générer le résultat.
Toutes ces fonctions intégrées sont présentes dans les fichiers d’en-tête C, nous spécifierons également le nom des fichiers d’en-tête dans lesquels une fonction particulière est définie lors de la discussion.
Les fichiers standard
La programmation en C traite tous les périphériques en tant que fichiers. Ainsi, les périphériques tels que l’affichage sont traités de la même manière que les fichiers et les trois fichiers suivants s’ouvrent automatiquement lorsqu’un programme s’exécute pour permettre l’accès au clavier et à l’écran.
Fichier standard | Pointeur de fichier | périphérique |
---|---|---|
Entrée standard | stdin | Clavier |
Sortie standard | stdout | Ecran |
Erreur standard | stderr | Ecran |
Spécificateurs de format
Type de données | Spécificateur de Format |
---|---|
int | %d |
char | %c |
float | %f |
double | %lf |
long double | %Lf |
Fonctions scanf() et printf()
Le fichier d'en-tête d'entrée-sortie standard, nommé stdio.h contient la définition des fonctions printf() et scanf(), qui sont utilisées pour afficher la sortie à l'écran et pour lire l'entrée de l'utilisateur respectivement.
printf()
La fonction printf() affiche la valeur transmise en tant que paramètre sur l'écran de la console.
Syntaxe
- où %X est le spécificateur de format en C. C'est un moyen d'indiquer au compilateur quel type de données se trouve dans une variable
- variableDeTypeX : nom de variable de type X
scanf()
La méthode scanf() lit la valeur de la console selon le type spécifié.
Syntaxe
- où %X est le spécificateur de format en C. C'est un moyen d'indiquer au compilateur quel type de données se trouve dans une variable
- & est l'opérateur d'adresse en C, qui indique au compilateur de changer la valeur réelle de cette variable(variableDeTypeX), stockée à cette adresse dans la mémoire.
Exemple 1 :
#include < stdio.h> int main(void) { int a; float b; char d; // lire et ecrire un type entier scanf("%d%",&a); printf("a=%d",a); // lire et ecrire un type réel scanf("%f",&b); printf("b=%f",b); // lire et ecrire un caractère scanf("%c",&d); printf("d=%c",d); return 0; }
a=2
3.5
b=3.5
f
d=f
Valeurs multiples
Voici comment vous pouvez utiliser plusieurs entrées de l'utilisateur et les afficher.
Exemple 2 :
#include < stdio.h> int main(void) { int a,b; float c; scanf("%d%d%f",&a,&b,&c); printf("a=%d - b=%d - c=%f",a,b,c); return 0; }
5
3.5
a=2 - b=5 - c=3.500000
Fonctions getchar() et putchar()
La fonction getchar() lit un caractère du terminal et le renvoie sous forme d'entier. Cette fonction ne lit qu'un seul caractère à la fois. Vous pouvez utiliser cette méthode dans une boucle si vous souhaitez lire plusieurs caractères.
La fonction putchar() affiche le caractère qui lui est passé à l'écran et renvoie le même caractère. Cette fonction affiche également un seul caractère à la fois. Si vous souhaitez afficher plusieurs caractères, utilisez la méthode putchar() dans une boucle.
Exemple 3 :
#include < stdio.h> int main(void) { int c; printf("Saisir un caractère : "); c=getchar(); printf("voici votre caractère : "); putchar(c); return 0; }
voici votre caractère : A
Fonctions gets() et puts()
La fonction gets() lit une ligne de stdin(entrée standard) dans la mémoire tampon pointée par le pointeur str, jusqu'à la terminaison de la nouvelle ligne ou EOF (fin du fichier) se produise.
La fonction puts() écrit la chaine str à la fin de la nouvelle ligne sur stdout.
Exemple 4 :
#include < stdio.h> int main(void) { char nom[20]; printf("Saisir votre nom : "); gets(nom); printf("votre nom est : "); puts(nom); return 0; }
votre nom est : ESSADDOUKI
Différence entre scanf() et gets()
La principale différence entre ces deux fonctions est que scanf() arrête de lire les caractères lorsqu'il rencontre un espace, mais gets() lit également l'espace en tant que caractère.