0Pricing
C Academy · Lezione

Leggere i caratteri

getchar e putchar

Leggere i caratteri è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 4 lezioni in totale.

Leggere singoli caratteri

C fornisce getchar() per leggere un carattere alla volta dall'input standard e putchar() per scrivere un carattere nell'output standard.

Entrambe le funzioni si trovano in <stdio.h>.

#include <stdio.h>

int main(void) {
    putchar('H');
    putchar('i');
    putchar('\n');
    return 0;
}

Nozioni di base su putchar

putchar(c) scrive il carattere c e restituisce il carattere scritto oppure EOF in caso di errore.

È il modo più semplice per produrre un singolo byte.

#include <stdio.h>

int main(void) {
    for (char c = 'A'; c <= 'E'; c++) {
        putchar(c);
    }
    putchar('\n');
    return 0;
}

getchar restituisce int

getchar() restituisce un int, non un char. Questo è importante perché deve poter restituire EOF, un valore distinto da qualsiasi carattere reale.

Memorizzi sempre il risultato in un int.

#include <stdio.h>

int main(void) {
    int c = 'A';
    printf("Stored value: %d\n", c);
    return 0;
}

Che cos'è EOF

EOF significa End Of File, ovvero fine del file. getchar() lo restituisce quando non c'è più input.

In genere corrisponde al valore -1; per questo getchar usa int, così non può essere confuso con il byte 255.

#include <stdio.h>

int main(void) {
    printf("EOF has value %d\n", EOF);
    return 0;
}

Lo schema del ciclo di lettura

Lo schema classico legge i caratteri fino a EOF. Poiché qui non è disponibile un input interattivo, il ciclo termina immediatamente, ma questa è la struttura standard.

  • Assegni il valore all'interno della condizione.
  • Esegua il confronto con EOF.
#include <stdio.h>

int main(void) {
    int c;
    while ((c = getchar()) != EOF) {
        putchar(c);
    }
    printf("Reached end of input\n");
    return 0;
}

Contare i caratteri

Un'attività comune consiste nel contare quanti caratteri sono stati letti. Incrementi un contatore all'interno del ciclo di lettura.

#include <stdio.h>

int main(void) {
    int c;
    long count = 0;
    while ((c = getchar()) != EOF) {
        count++;
    }
    printf("Read %ld characters\n", count);
    return 0;
}

Convertire in maiuscolo durante l'eco

È possibile trasformare ogni carattere prima di scriverlo. Qui ogni carattere letto viene convertito in maiuscolo usando toupper.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    int c;
    while ((c = getchar()) != EOF) {
        putchar(toupper(c));
    }
    return 0;
}

Contare le righe

Contare i caratteri di nuova riga indica quante righe sono state lette. Verifichi ogni carattere confrontandolo con '\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;
}

Reinserire un carattere

ungetc(c, stdin) reinserisce un carattere nel flusso di input, in modo che la lettura successiva lo restituisca di nuovo.

È utile quando, durante la scansione, si legge un carattere in più del necessario.

#include <stdio.h>

int main(void) {
    ungetc('X', stdin);
    int c = getchar();
    printf("Got back: %c\n", c);
    return 0;
}

getchar e scanf a confronto

getchar offre un controllo preciso a livello di byte, mentre scanf analizza l'input formattato.

Per l'elaborazione carattere per carattere, ad esempio nei filtri e nei tokenizer, getchar è lo strumento giusto.

#include <stdio.h>

int main(void) {
    int c = '5';
    if (c >= '0' && c <= '9') {
        printf("It is a digit: %c\n", c);
    }
    return 0;
}

Una semplice struttura per un filtro

I filtri leggono dall'input, trasformano i dati e scrivono nell'output. Questa struttura elimina tutti gli spazi dal flusso di input.

#include <stdio.h>

int main(void) {
    int c;
    while ((c = getchar()) != EOF) {
        if (c != ' ') {
            putchar(c);
        }
    }
    return 0;
}

Verifica rapida

Verifichi la propria comprensione della lettura dei caratteri.

Riepilogo

Ha imparato a leggere e scrivere caratteri:

  • getchar() legge un carattere e restituisce un int.
  • putchar(c) scrive un carattere.
  • EOF segnala la fine dell'input; usi il ciclo while ((c = getchar()) != EOF).
  • ungetc può reinserire un carattere nel flusso.

Domande Frequenti

La lezione «Leggere i caratteri» è gratuita?

Sì — il testo completo di «Leggere i caratteri» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 4 lezioni in totale.

Cosa imparerò in «Leggere i caratteri»?

getchar e putchar Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C Academy?

Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Leggere i caratteri»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C Academy?

Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Caratteri come interi
  2. La libreria ctype
  3. Leggere i caratteri
  4. Creare utility per i caratteri
← Torna a C Academy