Kapitel 5 Unit 4 von 5 Theorie + Übungen Dauer: ~45 Min.
Ömer
Ömer sagt:

C hat eine ganze Bibliothek für String-Operationen: <string.h>. Damit kannst du Strings messen, kopieren, vergleichen und verketten – ohne selbst jedes Zeichen anfassen zu müssen! 🔧

strlen – Länge messen strcpy – kopieren strcmp – vergleichen strcat – verketten Sicherheit bei String-Funktionen

📚 Die string.h-Bibliothek

Mit #include <string.h> erhältst du viele nützliche String-Funktionen:

FunktionZweckBeispielErgebnis
strlen(s)Länge ohne \0strlen("Hallo")5
strcpy(z, q)q → z kopierenstrcpy(ziel, "Hi")ziel = "Hi"
strcmp(a, b)Vergleichstrcmp("A","A")0 (gleich)
strcat(z, q)q an z anhängenstrcat("Ha","llo")"Hallo"
strncpy(z,q,n)Maximal n Zeichenstrncpy(z,q,10)Sicherer!
string_funktionen.cC
#include <stdio.h>
#include <string.h>

int main() {
    char s1[20] = "Hallo";
    char s2[20] = "Welt";
    char ziel[40];

    /* strlen – Länge */
    printf("Länge: %zu\n", strlen(s1));     // 5

    /* strcpy – Kopieren */
    strcpy(ziel, s1);
    printf("Kopie: %s\n", ziel);           // Hallo

    /* strcat – Verketten */
    strcat(ziel, " ");
    strcat(ziel, s2);
    printf("Kette: %s\n", ziel);           // Hallo Welt

    /* strcmp – Vergleich */
    if (strcmp(s1, "Hallo") == 0)
        printf("Strings sind gleich!\n");

    return 0;
}
▶ Ausgabe
Länge: 5
Kopie: Hallo
Kette: Hallo Welt
Strings sind gleich!

🔍 strcmp im Detail

strcmp gibt 0 zurück wenn GLEICH

strcmp(a, b) gibt zurück:
0 – a und b sind gleich
< 0 – a kommt alphabetisch vor b
> 0 – a kommt alphabetisch nach b

Wichtig: if (strcmp(a,b) == 0) – nicht if (a == b)!

✏️ Übungen

Übung 1

Ergebnisse bestimmen

Gegeben: char s[] = "Programmieren";

  1. strlen(s) = _______
  2. strcmp("abc","abc") = _______
  3. strcmp("B","A") ist _______ (negativ/0/positiv)
Übung 2

Fehler finden

Finde und korrigiere die Fehler:

char a[10] = "Hi"; char b[10]; b = a; // Fehler: ________________________ if (a == b) // Fehler: ________________________ printf("Gleich\n");
Übung 3 – Programm

Passwort-Prüfung

Schreibe ein Programm, das ein Passwort einliest und mit "geheim123" vergleicht:

#include <stdio.h> #include <string.h> int main() { char eingabe[30]; char korrekt[] = "geheim123"; printf("Passwort: "); scanf("%s", eingabe); if (strcmp(___, ___) == 0) { printf("Zugang gewährt!\n"); } else { printf("Falsches Passwort!\n"); } return 0; }
Übung 4 – Programm

Vollständiger Name zusammenbauen

Lese Vor- und Nachname getrennt ein, baue mit strcat den vollen Namen zusammen und gib ihn mit seiner Länge aus:

#include <stdio.h> #include <string.h> int main() { char vorname[20], nachname[20], vollname[50]; printf("Vorname: "); scanf("%s", vorname); printf("Nachname: "); scanf("%s", nachname); /* vollname = vorname + " " + nachname */ printf("Voller Name: %s (Länge: %zu)\n", vollname, strlen(vollname)); return 0; }
strcpy zuerst für den Vornamen, dann strcat für " " und strcat für den Nachnamen!
Übung 5 – Bonus

Palindrom-Prüfung

Ein Palindrom liest sich vorwärts und rückwärts gleich (z.B. "racecar", "level", "madam"). Schreibe einen Palindrom-Checker ohne Bibliotheksfunktion – nur mit Index-Vergleich:

#include <stdio.h> #include <string.h> int ist_palindrom(char s[]) { int links = 0; int rechts = strlen(s) - 1; while (links < rechts) { if (s[links] != s[rechts]) return 0; /* kein Palindrom */ links++; rechts--; } return 1; /* Palindrom! */ } int main() { char woerter[][20] = {"racecar", "hello", "level", "world", "madam"}; for (int i = 0; i < 5; i++) { printf("%-10s → %s\n", woerter[i], ist_palindrom(woerter[i]) ? "Palindrom" : "kein Palindrom"); } return 0; }
Die zwei-Zeiger-Methode: links startet am Anfang, rechts am Ende. Schritt für Schritt aufeinander zu bewegen und Zeichen vergleichen – elegant und effizient!