Lire des caractères
getchar et putchar
Lire des caractères est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.
Lire des caractères isolés
Le C fournit getchar() pour lire un caractère à la fois depuis l’entrée standard, et putchar() pour écrire un caractère vers la sortie standard.
Les deux fonctions se trouvent dans <stdio.h>.
#include <stdio.h>
int main(void) {
putchar('H');
putchar('i');
putchar('\n');
return 0;
}Les bases de putchar
putchar(c) écrit le caractère c et renvoie le caractère écrit, ou EOF en cas d’erreur.
C’est la manière la plus simple d’afficher un seul octet.
#include <stdio.h>
int main(void) {
for (char c = 'A'; c <= 'E'; c++) {
putchar(c);
}
putchar('\n');
return 0;
}getchar renvoie un int
getchar() renvoie un int, et non un char. C’est important, car la fonction doit pouvoir renvoyer EOF, une valeur distincte de tout caractère réel.
Stockez toujours le résultat dans un int.
#include <stdio.h>
int main(void) {
int c = 'A';
printf("Stored value: %d\n", c);
return 0;
}Qu’est-ce que EOF
EOF signifie « fin de fichier ». getchar() le renvoie lorsqu’il n’y a plus d’entrée.
Il s’agit généralement de la valeur -1. C’est pourquoi getchar utilise un int afin de ne pas le confondre avec l’octet 255.
#include <stdio.h>
int main(void) {
printf("EOF has value %d\n", EOF);
return 0;
}Le modèle de boucle de lecture
Le modèle classique lit les caractères jusqu’à EOF. Comme il n’y a pas d’entrée interactive ici, la boucle se termine immédiatement, mais cette structure est la forme standard.
- Effectuez l’affectation dans la condition.
- Comparez avec
EOF.
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
printf("Reached end of input\n");
return 0;
}Compter les caractères
Une tâche courante consiste à compter le nombre de caractères lus. Incrémentez un compteur dans la boucle de lecture.
#include <stdio.h>
int main(void) {
int c;
long count = 0;
while ((c = getchar()) != EOF) {
count++;
}
printf("Read %ld characters\n", count);
return 0;
}Afficher en majuscules
Vous pouvez transformer chaque caractère avant de l’écrire. Ici, chaque caractère lu est converti en majuscule avec toupper.
#include <stdio.h>
#include <ctype.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
putchar(toupper(c));
}
return 0;
}Compter les lignes
Compter les caractères de saut de ligne permet de savoir combien de lignes ont été lues. Testez chaque caractère avec '\n'.
#include <stdio.h>
int main(void) {
int c;
int lines = 0;
while ((c = getchar()) != EOF) {
if (c == '\n') lines++;
}
printf("Lines: %d\n", lines);
return 0;
}Remettre un char dans le flux
ungetc(c, stdin) remet un caractère dans le flux d’entrée afin que la lecture suivante le renvoie à nouveau.
C’est utile lorsque vous avez lu un caractère de trop pendant une analyse.
#include <stdio.h>
int main(void) {
ungetc('X', stdin);
int c = getchar();
printf("Got back: %c\n", c);
return 0;
}getchar ou scanf
getchar vous donne un contrôle précis au niveau des octets, tandis que scanf analyse une entrée formatée.
Pour traiter les caractères un par un, par exemple avec des filtres et des analyseurs de jetons, getchar est l’outil approprié.
#include <stdio.h>
int main(void) {
int c = '5';
if (c >= '0' && c <= '9') {
printf("It is a digit: %c\n", c);
}
return 0;
}Structure d’un filtre simple
Les filtres lisent l’entrée, la transforment, puis écrivent le résultat en sortie. Cette structure supprime tous les espaces du flux d’entrée.
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
if (c != ' ') {
putchar(c);
}
}
return 0;
}Vérification rapide
Testez votre compréhension de la lecture des caractères.
Récapitulatif
Vous avez appris à lire et à écrire des caractères :
getchar()lit un caractère et renvoie unint.putchar(c)écrit un caractère.EOFsignale la fin de l’entrée : utilisez la bouclewhile ((c = getchar()) != EOF).ungetcpeut remettre un caractère dans le flux.
Questions Fréquemment Posées
La leçon « Lire des caractères » est-elle gratuite ?
Oui — le texte complet de « Lire des caractères » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Lire des caractères » ?
getchar et putchar Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C Academy ?
Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Lire des caractères » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C Academy ?
Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Caractères comme entiers
- La bibliothèque ctype
- Lire des caractères
- Créer des utilitaires pour caractères