0Pricing
C Academy · Leçon

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 un int.
  • putchar(c) écrit un caractère.
  • EOF signale la fin de l’entrée : utilisez la boucle while ((c = getchar()) != EOF).
  • ungetc peut 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

  1. Caractères comme entiers
  2. La bibliothèque ctype
  3. Lire des caractères
  4. Créer des utilitaires pour caractères
← Retour à C Academy