Stringhe come array di char
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 12 di 63.
In C, non esiste un tipo di dati stringa integrato come quello che potresti trovare in altri linguaggi di programmazione. Le stringhe sono invece rappresentate come array di caratteri. Questo concetto fondamentale è essenziale per comprendere come viene gestito il testo nella programmazione in C.
Una stringa in C è semplicemente una sequenza di caratteri memorizzati in posizioni di memoria consecutive. Per creare una stringa, dichiari un array di caratteri abbastanza grande da contenere tutti i caratteri necessari, più uno spazio extra per uno speciale carattere terminatore.
char greeting[6]; // Può contenere 5 caratteri + il terminatore
char message[20]; // Può contenere fino a 19 caratteri + il terminatoreIl modo più pratico per lavorare con le stringhe è inizializzarle direttamente con un valore letterale di stringa quando dichiari l’array. C gestisce automaticamente i dettagli della memorizzazione di ogni carattere nell’array:
char greeting[6] = "Hello";
// Questo memorizza: 'H', 'e', 'l', 'l', 'o', più un terminatore specialePuoi anche lasciare che C determini automaticamente la dimensione dell'array omettendo la specifica della dimensione quando lo inizializzi con un valore letterale stringa:
char greeting[] = "Hello"; // C imposta automaticamente la dimensione a 6Capire che le stringhe sono array di caratteri è fondamentale perché spiega come C gestisce i dati testuali e ti prepara a lavorare con le funzioni di manipolazione delle stringhe che operano su questi array di caratteri.
Sfida
FacileScrivi un programma C che mostri come creare e utilizzare array di caratteri per memorizzare stringhe. Il tuo programma deve:
- Dichiarare un array di caratteri chiamato
greetingcon spazio sufficiente per contenere la stringa "Hello" (ricorda di considerare il terminatore nullo) - Inizializzare l'array
greetingcon il valore letterale stringa "Hello" - Dichiarare un secondo array di caratteri chiamato
messagecon 20 elementi - Inizializzare l'array
messagecon il valore letterale stringa "Welcome" - Dichiarare un terzo array di caratteri chiamato
wordsenza specificarne la dimensione e lasciare che C la determini automaticamente inizializzandolo con "Programming" - Stampare tutte e tre le stringhe usando
printfcon lo specificatore di formato%s - Stampare la dimensione di ciascun array usando
sizeofper mostrare quanta memoria occupa ogni array di caratteri
L'output deve mostrare i risultati nel seguente formato:
greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12Questa sfida verifica la tua comprensione di come dichiarare array di caratteri per memorizzare stringhe, di come i valori letterali stringa vengano terminati automaticamente con un carattere nullo quando sono assegnati ad array di caratteri e di come C calcoli automaticamente le dimensioni degli array quando ometti di specificarle durante l'inizializzazione.
Provalo tu
#include <stdio.h>
int main() {
// TODO: Scrivi qui il tuo codice
// Dichiara e inizializza gli array di caratteri come specificato nell'esercizio
// Stampa le stringhe e le loro dimensioni
printf("greeting: %s\n", greeting);
printf("message: %s\n", message);
printf("word: %s\n", word);
printf("Size of greeting: %lu\n", sizeof(greeting));
printf("Size of message: %lu\n", sizeof(message));
printf("Size of word: %lu\n", sizeof(word));
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Fondamenti dei puntatori
Che cos’è un puntatore?Dichiarare i puntatoriL’operatore di indirizzo (&)L’operatore di dereferenziazione (*)Puntatori NULLRiepilogo: nozioni di base sui puntatori4Progetto: Utility di testo semplice
Panoramica del progettoConteggio dei caratteri2Puntatori e array
I nomi degli array come puntatoriElementi degli array e puntatoriAritmetica dei puntatoriConfrontare i puntatoriRiepilogo: attraversamento di un array con i puntatori5Puntatori e funzioni
Passaggio per valorePassare puntatori alle funzioniModificare le variabili tramite puntatoriUn esempio classico: scambiare valoriPassare array alle funzioniRiepilogo: argomenti puntatore nelle funzioni3Array di caratteri e stringhe
Stringhe come array di charIl terminatore nullInput di stringhe con scanfUso di strlen()Uso di strcpy()Uso di strcat()Uso di strcmp()Riepilogo: funzioni di base per le stringhe6Gestione della memoria
Memoria Stack vs. HeapAllocazione dinamica - malloc()Usare sizeof() per l'allocazioneVerificare il fallimento dell'allocazioneLiberare la memoria con free()Allocare con calloc()Riepilogo: array dinamico9Progetto: Inserimento semplice di un contatto
Progetto: Definire una struct ContattoFunzione per creare un contattoEsercitati da solo: Compilatore C online