Menu
Coddy logo textTech

Verwendung von strcat()

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 17 von 63.

Du hast gelernt, wie man Strings mit strcpy() kopiert, aber was ist, wenn du zwei Strings miteinander verbinden möchtest? Dies wird Konkatenation genannt, und C stellt dafür die Funktion strcat() aus der Bibliothek <string.h> bereit.

Die Funktion strcat() hängt den Inhalt einer Zeichenkette an das Ende einer anderen Zeichenkette an. Sie nimmt zwei Argumente entgegen: die Zielzeichenkette (die geändert wird) und die Quellzeichenkette (die am Ende hinzugefügt wird).

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

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting enthält jetzt "Hello World"

Es ist entscheidend, dass dein Ziel-String ausreichend Platz bietet, um sowohl den ursprünglichen Inhalt als auch den neu angehängten Inhalt aufzunehmen. Die Funktion strcat() findet den Nullterminator im Ziel-String, entfernt ihn, kopiert den Quell-String an diese Stelle und fügt ganz am Ende einen neuen Nullterminator hinzu.

Manchmal musst du eine Zahl (wie ein int) an einen String anhängen. Da strcat() nur mit Zeichenarrays funktioniert, musst du die Zahl zuerst in einen String umwandeln. Das kannst du mit sprintf() tun, das genauso wie printf() funktioniert, aber das formatierte Ergebnis in ein Zeichenarray schreibt, anstatt es auf dem Bildschirm auszugeben. sprintf() ist Bestandteil von <stdio.h>, das in den meisten C-Programmen bereits eingebunden ist.

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // numStr enthält jetzt "42" als String

Sobald die Zahl als Zeichenkette in numStr gespeichert ist, kannst du strcat() wie gewohnt verwenden, um sie an eine andere Zeichenkette anzuhängen:

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary now contains "Total people processed: 3"

Diese Funktion ist unverzichtbar, um längere Zeichenketten aus kleineren Teilen zu erstellen, beispielsweise vollständige Sätze aus einzelnen Wörtern zu bilden oder Benutzereingaben mit vordefiniertem Text zu kombinieren.

challenge icon

Aufgabe

Einfach

Schreibe ein C-Programm, das die Stringverkettung mithilfe der Funktion strcat() demonstriert, um personalisierte Nachrichten zu erstellen. Dein Programm sollte:

  1. Eine Ganzzahl n einlesen, die die Anzahl der zu verarbeitenden Personen angibt
  2. Für jede Person:
    • Den Vornamen aus der Eingabe einlesen
    • Den Nachnamen aus der Eingabe einlesen
    • Ein Zeichenarray namens fullName mit 100 Elementen erstellen
    • strcpy() verwenden, um den Vornamen in fullName zu kopieren
    • strcat() verwenden, um ein einzelnes Leerzeichen " " an fullName anzuhängen
    • strcat() verwenden, um den Nachnamen an fullName anzuhängen
    • Ein Zeichenarray namens greeting mit 150 Elementen erstellen
    • strcpy() verwenden, um "Hello, " in greeting zu kopieren
    • strcat() verwenden, um fullName an greeting anzuhängen
    • strcat() verwenden, um "! Welcome to our program." an greeting anzuhängen
    • Die abschließende Begrüßungsnachricht ausgeben
  3. Nach der Verarbeitung aller Personen eine Zusammenfassungsnachricht erstellen:
    • Ein Zeichenarray namens summary mit 100 Elementen erstellen
    • strcpy() verwenden, um "Total people processed: " in summary zu kopieren
    • Die Zahl n in einen String umwandeln und strcat() verwenden, um sie an summary anzuhängen
    • Die Zusammenfassungsnachricht ausgeben

Denke daran, den Header <string.h> einzubinden, um die Stringfunktionen verwenden zu können.

Deine Ausgabe sollte im folgenden Format angezeigt werden:

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

Wenn die Eingabe beispielsweise wie folgt lautet:

2
John
Doe
Alice
Smith

Deine Ausgabe sollte wie folgt aussehen:

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

Diese Aufgabe testet dein Verständnis dafür, wie strcat() verwendet wird, um mehrere Strings miteinander zu verketten, wie es mit strcpy() zur anfänglichen Einrichtung eines Strings kombiniert wird und wie komplexe Strings Schritt für Schritt aus mehreren Komponenten erstellt werden.

Probier es selbst

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

int main() {
    // Lese die Anzahl der Personen
    int n;
    scanf("%d", &n);
    
    // TODO: Schreibe deinen Code darunter
    // Verarbeite jede Person und erstelle Begrüßungsnachrichten
    // Erstelle dann und zeige die Zusammenfassungsnachricht an
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C-Compiler