0Pricing
C Academy · Lektion

strlen, strcpy, strcat

Zentrale String-Funktionen

strlen, strcpy, strcat ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Strings in C

In C ist ein String lediglich ein Array aus char, das mit einem speziellen Zeichen, dem Nullterminator '\0', endet.

Die Funktionen in <string.h> verwenden diesen Terminator, um das Ende eines Strings zu erkennen. Ohne ihn lesen sie über das Ende Ihres Arrays hinaus.

#include <stdio.h>

int main(void) {
    char name[] = "Alice";
    printf("%s\n", name);
    printf("Bytes used: %lu\n", sizeof(name));
    return 0;
}

string.h einbinden

Um String-Funktionen zu verwenden, müssen Sie den Header einbinden:

  • #include <string.h>

Dadurch stehen Ihnen strlen, strcpy, strcat, strcmp und weitere Funktionen zur Verfügung.

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

int main(void) {
    char greeting[] = "Hello";
    printf("Length is %lu\n", strlen(greeting));
    return 0;
}

strlen: Zeichen zählen

strlen gibt die Anzahl der Zeichen vor dem Nullterminator zurück. Das Zeichen '\0' selbst wird nicht mitgezählt.

Daher gibt strlen("cat") den Wert 3 zurück, obwohl das Array 4 Bytes belegt.

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

int main(void) {
    char word[] = "cat";
    printf("strlen = %lu\n", strlen(word));
    printf("sizeof = %lu\n", sizeof(word));
    return 0;
}

strlen ist O(n)

Da C-Strings keine gespeicherte Länge besitzen, muss strlen jedes Zeichen durchlaufen, bis '\0' gefunden wird.

Dadurch handelt es sich um eine Operation der Ordnung O(n). Vermeiden Sie es bei großen Strings, die Funktion wiederholt in einer Schleifenbedingung aufzurufen.

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

int main(void) {
    char msg[] = "programming";
    size_t len = strlen(msg);
    for (size_t i = 0; i < len; i++) {
        printf("%c", msg[i]);
    }
    printf("\n");
    return 0;
}

strcpy: Strings kopieren

Strings können Sie nicht mit = kopieren. Verwenden Sie strcpy(dest, src); die Funktion kopiert src einschließlich des Nullterminators nach dest.

Das Ziel muss groß genug sein, um die Quelle einschließlich des Terminators aufzunehmen.

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

int main(void) {
    char src[] = "Hello";
    char dest[20];
    strcpy(dest, src);
    printf("%s\n", dest);
    return 0;
}

strcpy: Gefahr eines Pufferüberlaufs

Wenn dest zu klein ist, schreibt strcpy über das Ende des Puffers hinaus und beschädigt den Speicher. Dies ist ein klassischer Sicherheitsfehler.

Bevorzugen Sie strncpy(dest, src, n), das höchstens n Bytes kopiert. Hinweis: strncpy setzt möglicherweise keinen Nullterminator, wenn src zu lang ist.

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

int main(void) {
    char src[] = "LongString";
    char dest[5];
    strncpy(dest, src, 4);
    dest[4] = '\0';
    printf("%s\n", dest);
    return 0;
}

strcat: Zeichenketten verketten

strcat(dest, src) hängt src an das Ende von dest an. Der Schreibvorgang beginnt am Nullterminator von dest und fügt am Ende einen neuen hinzu.

dest muss bereits eine gültige Zeichenkette mit ausreichend freiem Speicherplatz sein.

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

int main(void) {
    char buffer[20] = "Hello, ";
    strcat(buffer, "World");
    printf("%s\n", buffer);
    return 0;
}

Zeichenketten Schritt für Schritt aufbauen

Sie können strcpy und strcat verketten, um eine Zeichenkette Stück für Stück aufzubauen.

Beginnen Sie immer mit einem initialisierten Puffer, damit das erste strcat einen gültigen Terminator findet.

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

int main(void) {
    char full[50];
    strcpy(full, "Mr. ");
    strcat(full, "John ");
    strcat(full, "Smith");
    printf("%s\n", full);
    return 0;
}

Sichereres Verketten mit strncat

strncat(dest, src, n) hängt höchstens n Zeichen aus src an und fügt anschließend immer einen Nullterminator hinzu.

Das hilft, Überläufe zu verhindern, wenn die Länge der Quelle unbekannt ist.

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

int main(void) {
    char dest[16] = "Data: ";
    char src[] = "1234567890";
    strncat(dest, src, 5);
    printf("%s\n", dest);
    return 0;
}

Rückgabewerte

Sowohl strcpy als auch strcat geben einen Zeiger auf dest zurück. Dadurch können Sie Aufrufe verschachteln, was jedoch die Lesbarkeit beeinträchtigen kann.

strlen gibt einen Wert vom Typ size_t zurück, der vorzeichenlos ist. Seien Sie beim Vergleich mit vorzeichenbehafteten Ganzzahlen vorsichtig.

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

int main(void) {
    char a[20] = "foo";
    char b[] = "bar";
    printf("%s\n", strcat(a, b));
    return 0;
}

Häufige Falle bei der Speicherzuweisung

Ein häufiger Fehler besteht darin, beim Bemessen eines Puffers das +1 für den Nullterminator zu vergessen.

Für eine Zeichenkette der Länge n benötigen Sie n + 1 Bytes. Die kombinierte Länge zweier verketteter Zeichenketten beträgt strlen(a) + strlen(b) + 1.

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

int main(void) {
    char a[] = "abc";
    char b[] = "de";
    size_t needed = strlen(a) + strlen(b) + 1;
    printf("Need %lu bytes\n", needed);
    return 0;
}

Schnelltest

Testen Sie Ihr Verständnis von Zeichenkettenlängen.

Zusammenfassung

Sie haben die wichtigsten Funktionen aus string.h kennengelernt:

  • strlen zählt die Zeichen vor '\0' (O(n)).
  • strcpy kopiert eine Zeichenkette; das Ziel muss groß genug sein.
  • strcat hängt Text an eine vorhandene Zeichenkette an.
  • Reservieren Sie immer Platz für den Nullterminator und bevorzugen Sie aus Sicherheitsgründen die Varianten strn*.

Häufig gestellte Fragen

Ist die Lektion „strlen, strcpy, strcat“ kostenlos?

Ja — der vollständige Text von „strlen, strcpy, strcat“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „strlen, strcpy, strcat“?

Zentrale String-Funktionen Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C Academy zu starten?

Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „strlen, strcpy, strcat“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?

Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. strlen, strcpy, strcat
  2. strcmp und Vergleiche
  3. strtok und Tokenizing
  4. memcpy und memset
← Zurück zu C Academy