Cours programmation en langage C - Chapitre 3 : Les entrées sorties
Ce laboratoire présente les bases des entrées et sorties en langage C à travers l'utilisation des fonctions standard de la bibliothèque stdio . Il permet d'apprendre à afficher des données formatées, à lire des données au clavier, ainsi qu'à manipuler des caractères. Pour réaliser ce TP, un environnement de développement C avec un compilateur standard est nécessaire.
D'après le document Cours programmation en langage C - Chapitre 3 : Les entrées sorties
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Programming in C · PDF · 3 pages · 2011
Afficher l'aperçu du document
Ce laboratoire présente les bases des entrées et sorties en langage C à travers l'utilisation des fonctions standard de la bibliothèque stdio. Il permet d'apprendre à afficher des données formatées, à lire des données au clavier, ainsi qu'à manipuler des caractères. Pour réaliser ce TP, un environnement de développement C avec un compilateur standard est nécessaire.
Objectifs
- Comprendre et utiliser la fonction
printfpour l'écriture formatée. - Apprendre à lire des données formatées avec
scanf. - Utiliser les fonctions
putcharetgetcharpour manipuler des caractères. - Maîtriser les différents spécificateurs de format pour les types de données courants.
Prérequis et installation
- Connaissances de base en programmation C.
- Un compilateur C compatible avec la bibliothèque standard
stdio.h. - Un éditeur de texte pour écrire les programmes.
- Un terminal ou console pour exécuter les programmes et saisir les entrées clavier.
Utilisation de printf pour l’écriture formatée
La fonction printf permet d'afficher des données formatées à l'écran. Elle prend en premier argument une chaîne de format qui détermine la représentation des données, suivie des variables ou expressions à afficher.
La syntaxe générale est :
printf("<format>", <Expr1>, <Expr2>, ... );
Les principaux spécificateurs de format sont :
| Symbole | Type | Impression comme |
|---|---|---|
| %d ou %i | int | entier relatif |
| %u | int | entier naturel (unsigned) |
| %o | int | entier exprimé en octal |
| %x | int | entier exprimé en hexadécimal |
| %c | char | caractère |
| %f | double | rationnel en notation décimale |
| %e | double | rationnel en notation scientifique |
| %s | char* | chaîne de caractères |
Exemple de cadrage à droite (par défaut) :
printf("%3d", n);
Si n=20, l'affichage sera 20 (avec deux espaces avant 20).
Pour un cadrage à gauche, on utilise le signe - :
printf("%-3d", n);
Si n=3, l'affichage sera 3 (avec deux espaces après 3).
Exemples pratiques
#include <stdio.h>
void main()
{
int i=3;
printf("%d%d%d", i, i, i);
}
// Résultat : 333
#include <stdio.h>
void main()
{
int i=3;
printf("%3d%3d%3d", i, i, i);
}
// Résultat : " 3 3 3" (avec espaces pour le cadrage)
#include <stdio.h>
void main()
{
int i=1234567789;
printf("%3d %3d %3d", i, i, i);
}
// Résultat : "1234567789 1234567789 1234567789"
#include <stdio.h>
void main()
{
float x=12.5;
printf("%f %f", x, x);
}
// Résultat : "12.500000 12.500000"
#include <stdio.h>
void main()
{
float x=12.5;
printf("%5.2f %5.2f", x, x);
}
// Résultat : "12.50 12.50"
Lecture formatée avec scanf
La fonction scanf permet de lire des données depuis le clavier (entrée standard) et de les stocker dans des variables. Elle utilise une chaîne de format similaire à printf, mais les arguments sont les adresses des variables où les données seront stockées.
Syntaxe :
scanf("<format>", &Var1, &Var2, ... );
Exemple :
int A, B;
scanf("%4d%2d", &A, &B);
Si l'utilisateur entre 1234567, alors A=1234 et B=56. Le chiffre 7 reste dans le buffer pour une lecture ultérieure.
Principaux spécificateurs de lecture
| Symbole | Type attendu |
|---|---|
| %d ou %i | int* |
| %u | int* |
| %o | int* |
| %b | int* |
| %c | char* |
| %s | char* |
| %f ou %e | float* |
Écriture et lecture de caractères avec putchar et getchar
La fonction putchar affiche un seul caractère à l'écran. Par exemple :
putchar('a'); // affiche le caractère 'a'
Exemples d'utilisation :
char A = 225;
char B = '\a'; // caractère d'alerte sonore
int C = '\a';
putchar('x'); // affiche 'x'
putchar('?'); // affiche '?'
putchar('\n'); // retour à la ligne
putchar(65); // affiche le caractère ASCII 65 => 'A'
putchar(A); // affiche le caractère ASCII 225 => 'ß'
putchar(B); // déclenche un beep sonore
putchar(C); // déclenche un beep sonore
La fonction getchar lit un caractère au clavier et retourne sa valeur. Elle est souvent utilisée dans une affectation :
#include <stdio.h>
void main()
{
char x;
x = getchar();
putchar(x);
}
// Si l'utilisateur tape 'A', le programme affiche 'A'
Les fonctions putchar(c) et printf("%c", c) sont équivalentes pour afficher un caractère. De même, getchar() et scanf("%c", &c) permettent toutes deux de lire un caractère.
Résultats attendus
- Affichage correct des données selon le format spécifié dans
printf, avec respect du cadrage et du nombre de décimales. - Lecture correcte des données au clavier avec
scanf, respectant la largeur des champs. - Affichage et lecture de caractères individuels avec
putcharetgetchar. - Compréhension des conversions entre types et formats d'affichage.
Erreurs fréquentes
- Oublier le signe
&devant les variables dansscanf, ce qui provoque des erreurs d'exécution. - Ne pas respecter la largeur maximale dans les formats de
scanf, entraînant un décalage dans la lecture des données. - Confondre les spécificateurs de format, par exemple utiliser
%dpour unfloatou vice versa. - Ne pas gérer le retour à la ligne ou les caractères blancs dans la lecture de caractères avec
getchar, ce qui peut perturber la lecture. - Utiliser
printfavec un format inadapté à la taille des données, ce qui peut entraîner un affichage tronqué ou incorrect.
Commentaires
Aucun commentaire pour le moment. Posez la première question.