Deutsche Lernausgabe
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 öffnenErwartetes 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.