Online C Compiler
Ouvrir dans le compilateur

Édition pédagogique en français

Chaînes de caractères en C

Respectez le terminateur nul, la capacité du tampon et les règles de string.h.

Ouvrir dans le compilateur

Chaînes de caractères en C
Respectez le terminateur nul, la capacité du tampon et les règles de string.h.

Une chaîne C se termine par un octet nul. Le tampon doit contenir texte et terminateur. strlen compte les caractères avant le zéro, mais ne connaît pas à elle seule la capacité de l’objet.

fgets reçoit la capacité et peut conserver le saut de ligne. Vérifiez place restante et terminaison lors des copies ou concaténations. Ne modifiez pas un littéral et ne lisez pas une entrée sans limite dans un tampon fixe.

Comparez le contenu avec strcmp, pas les adresses avec ==. Testez chaîne vide, longue entrée et espaces internes. Compter les octets ne revient pas forcément à compter les caractères Unicode.

Code source

#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;
}
Ouvrir dans le compilateur

Résultat attendu

=== 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

Questions fréquentes

Pourquoi le code et certains résultats restent-ils en anglais ?

Les mots-clés C, les identifiants, les commentaires du programme et les sorties attendues restent ceux de la version originale pour conserver un code exécutable et des tests cohérents. Les explications et les consignes sont traduites.