Online C Compiler
Apri nel compilatore

Edizione didattica italiana

Stringhe e terminatori in C

Gestisci capacità, terminazione, lettura e confronto delle stringhe.

Apri nel compilatore

Stringhe e terminatori in C
Gestisci capacità, terminazione, lettura e confronto delle stringhe.

Una stringa C termina con un byte nullo. Il buffer deve contenere testo e terminatore. strlen conta i byte prima dello zero, ma non conosce da sola la capacità dell’oggetto.

fgets riceve la capacità e può conservare il cambio riga. Verifica spazio rimanente e terminazione quando copi o concateni. Non modificare un letterale e non leggere senza limite in un buffer fisso.

Confronta il contenuto con strcmp, non gli indirizzi con ==. Prova stringa vuota, input lungo e spazi interni. Contare byte non equivale sempre a contare caratteri Unicode.

Codice sorgente

#include <stdio.h>
#include <string.h>

int main(void) {
    printf("=== C Strings: Declaration & Manipulation ===\n\n");

    // 1. Mutable stack array
    char greeting[32] = "Hello";
    char name[] = "Programmer";

    printf("Initial greeting: %s (Length: %zu)\n", greeting, strlen(greeting));
    printf("Name: %s (Length: %zu)\n", name, strlen(name));

    // 2. Safe string concatenation with snprintf
    char full_message[64];
    snprintf(full_message, sizeof(full_message), "%s, %s! Welcome to C.", greeting, name);
    printf("Concatenated: %s\n", full_message);

    // 3. In-place string mutation
    greeting[0] = 'J'; // "Jello"
    printf("Modified greeting: %s\n", greeting);

    // 4. String comparison
    char word1[] = "apple";
    char word2[] = "banana";
    int cmp = strcmp(word1, word2);
    if (cmp < 0) {
        printf("\"%s\" comes before \"%s\" alphabetically (cmp = %d)\n", word1, word2, cmp);
    }

    // 5. String reversal in-place
    char text[] = "Online C Compiler";
    size_t len = strlen(text);
    for (size_t i = 0; i < len / 2; i++) {
        char temp = text[i];
        text[i] = text[len - 1 - i];
        text[len - 1 - i] = temp;
    }
    printf("Reversed string: %s\n", text);

    return 0;
}
Apri nel compilatore

Risultato atteso

=== C Strings: Declaration & Manipulation ===

Initial greeting: Hello (Length: 5)
Name: Programmer (Length: 10)
Concatenated: Hello, Programmer! Welcome to C.
Modified greeting: Jello
"apple" comes before "banana" alphabetically (cmp = -1)
Reversed string: reliPmoC C enilnO

Domande frequenti

Perché il codice e alcuni risultati restano in inglese?

Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.