Online C Compiler
Im Compiler öffnen

Deutsche Lernausgabe

Zeichenketten in C

Beachten Sie Nullterminator, Pufferkapazität und die Regeln von string.h.

Im Compiler öffnen

Zeichenketten in C
Beachten Sie Nullterminator, Pufferkapazität und die Regeln von string.h.

Eine C-Zeichenkette endet mit einem Nullbyte. Der Puffer muss Text und Terminator aufnehmen. strlen zählt Zeichen vor der Null, kennt aber nicht von sich aus die Objektkapazität.

fgets erhält die Kapazität und kann den Zeilenumbruch beibehalten. Prüfen Sie beim Kopieren und Zusammenfügen freien Platz und Terminierung. Verändern Sie kein Literal und lesen Sie nicht unbegrenzt in einen festen Puffer.

Vergleichen Sie Inhalte mit strcmp und nicht Adressen mit ==. Testen Sie leere Zeichenketten, lange Eingaben und innere Leerzeichen. Bytes zu zählen entspricht nicht zwingend dem Zählen von Unicode-Zeichen.

Quellcode

#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;
}
Im Compiler öffnen

Erwartetes Ergebnis

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

Häufige Fragen

Warum bleiben Code und manche Ausgaben englisch?

C-Schlüsselwörter, Bezeichner, Programmkommentare und erwartete Ausgaben bleiben wie im Original, damit der Code ausführbar und die Tests konsistent bleiben. Erklärungen und Aufgabenstellungen sind übersetzt.