Menu
Coddy logo textTech

Verwendung von strcat()

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 17 von 63.

Sie haben gelernt, wie man Strings mit strcpy() kopiert, aber was ist, wenn Sie zwei Strings miteinander verbinden möchten? Dies wird als Verkettung bezeichnet, und C stellt für diesen Zweck die Funktion strcat() aus der Bibliothek <string.h> zur Verfügung.

Die Funktion strcat() hängt den Inhalt einer Zeichenfolge an das Ende einer anderen Zeichenfolge an. Sie nimmt zwei Argumente entgegen: die Ziel-Zeichenfolge (die geändert wird) und die Quell-Zeichenfolge (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 nun "Hello World"

Es ist entscheidend, dass Ihr Ziel-String über genügend Speicherplatz verfügt, um sowohl den ursprünglichen Inhalt als auch den neu angehängten Inhalt aufzunehmen. Die Funktion strcat() sucht den Null-Terminator im Ziel-String, entfernt diesen, kopiert den Quell-String an diese Position und fügt ganz am Ende einen neuen Null-Terminator hinzu.

Diese Funktion ist essenziell für den Aufbau längerer Strings aus kleineren Teilen, wie zum Beispiel das Erstellen vollständiger Sätze aus einzelnen Wörtern oder das Kombinieren von Benutzereingaben mit vordefiniertem Text.

Manchmal müssen Sie eine Zahl in einen String umwandeln, bevor Sie sie verketten können. Hierfür können Sie sprintf() aus <stdio.h> verwenden (das in den meisten C-Programmen bereits enthalten ist). sprintf() funktioniert genau wie printf(), aber anstatt auf den Bildschirm zu drucken, schreibt es das formatierte Ergebnis in ein char-Array.


Um zum Beispiel eine Ganzzahl in einen String umzuwandeln:

int age = 25;
char ageStr[10];
sprintf(ageStr, "%d", age);  // ageStr enthält nun "25"

char result[30] = "Age: ";
strcat(result, ageStr);       // result enthält nun "Age: 25"

Das erste Argument für sprintf() ist das Ziel-char-Array, das zweite ist der Format-String (unter Verwendung derselben Formatbezeichner wie bei printf()), und die übrigen Argumente sind die einzufügenden Werte.
challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das die String-Verkettung mit der Funktion strcat() demonstriert, um personalisierte Nachrichten zu erstellen. Ihr Programm sollte:

  1. Eine Ganzzahl n einlesen, die die Anzahl der zu verarbeitenden Personen darstellt
  2. Für jede Person:
    • Den Vornamen aus der Eingabe einlesen
    • Den Nachnamen aus der Eingabe einlesen
    • Ein Zeichen-Array 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 Zeichen-Array namens greeting mit 150 Elementen erstellen
    • strcpy() verwenden, um "Hello, " in greeting zu kopieren
    • strcat() verwenden, um den fullName an greeting anzuhängen
    • strcat() verwenden, um "! Welcome to our program." an greeting anzuhängen
    • Die endgültige Begrüßungsnachricht ausgeben
  3. Nach der Verarbeitung aller Personen eine Zusammenfassungsnachricht erstellen:
    • Ein Zeichen-Array 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

Denken Sie daran, den Header <string.h> einzubinden, um die String-Funktionen zu verwenden.

Ihre Ausgabe sollte die Ergebnisse im folgenden Format anzeigen:

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

Wenn die Eingabe zum Beispiel wie folgt lautet:

2
John
Doe
Alice
Smith

Sollte Ihre Ausgabe wie folgt aussehen:

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

Diese Herausforderung testet Ihr Verständnis für die Verwendung von strcat() zum Verketten mehrerer Strings, die Kombination mit strcpy() für die initiale String-Einrichtung und den schrittweisen Aufbau komplexer Strings aus mehreren Komponenten.

Spickzettel

Die Funktion strcat() aus <string.h> verkettet (verbindet) zwei Strings, indem sie den Quell-String an das Ende des Ziel-Strings anhängt.

Syntax: strcat(destination, source)

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

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

Wichtig: Der Ziel-String muss genügend Platz bieten, um sowohl den ursprünglichen Inhalt als auch den angehängten Inhalt aufzunehmen. Die Funktion sucht den Null-Terminator im Ziel, entfernt ihn, kopiert den Quell-String an diese Stelle und fügt am Ende einen neuen Null-Terminator hinzu.

Die Funktion sprintf() aus <stdio.h> arbeitet wie printf(), schreibt aber das formatierte Ergebnis in ein char-Array (String), anstatt es auszugeben. Dies macht sie nützlich für die Konvertierung von Ganzzahlen (oder anderen Werten) in Strings.

Syntax: sprintf(destination, format, value)

#include <stdio.h>

int num = 42;
char numStr[10];
sprintf(numStr, "%d", num);  // numStr enthält nun "42"

Wichtig: Das Ziel-Array muss groß genug sein, um den resultierenden String einschließlich des Null-Terminators aufzunehmen.

Probier es selbst

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

int main() {
    // Lies die Anzahl der Personen ein
    int n;
    scanf("%d", &n);
    
    // TODO: Schreibe deinen Code unten
    // Verarbeite jede Person und erstelle Begrüßungsnachrichten
    // Erstelle und zeige anschließend die Zusammenfassung 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 Logic & Flow