Verwendung von strcat()
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 17 von 63.
Sie haben gelernt, wie man Zeichenfolgen mit strcpy() kopiert, aber was ist, wenn Sie zwei Zeichenfolgen 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 genügend Platz bietet, 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 ihn, kopiert den Quell-String an diese Stelle und fügt am Ende einen neuen Null-Terminator hinzu.
Manchmal müssen Sie eine Zahl (wie einen int) mit einem String verketten. Da strcat() nur mit Zeichen-Arrays funktioniert, müssen Sie die Zahl zuerst in einen String umwandeln. Dies können Sie mit sprintf() tun, was genau wie printf() funktioniert, aber das formatierte Ergebnis in ein Zeichen-Array schreibt, anstatt es auf dem Bildschirm auszugeben. sprintf() ist Teil von <stdio.h>, was in den meisten C-Programmen bereits enthalten ist.
int n = 42;
char numStr[20];
sprintf(numStr, "%d", n); // numStr enthält nun "42" als StringSobald die Zahl als String in numStr gespeichert ist, können Sie strcat() verwenden, um sie wie gewohnt an einen anderen String anzuhängen:
char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr); // summary enthält nun "Total people processed: 3"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.
Aufgabe
EinfachSchreiben Sie ein C-Programm, das die String-Verkettung mit der Funktion strcat() demonstriert, um personalisierte Nachrichten zu erstellen. Ihr Programm sollte:
- Einen Ganzzahlwert
neinlesen, der die Anzahl der zu verarbeitenden Personen darstellt - Für jede Person:
- Den Vornamen aus der Eingabe lesen
- Den Nachnamen aus der Eingabe lesen
- Ein Zeichen-Array namens
fullNamemit 100 Elementen erstellen strcpy()verwenden, um den Vornamen infullNamezu kopierenstrcat()verwenden, um ein einzelnes Leerzeichen " " anfullNameanzuhängenstrcat()verwenden, um den Nachnamen anfullNameanzuhängen- Ein Zeichen-Array namens
greetingmit 150 Elementen erstellen strcpy()verwenden, um "Hello, " ingreetingzu kopierenstrcat()verwenden, um denfullNameangreetinganzuhängenstrcat()verwenden, um "! Welcome to our program." angreetinganzuhängen- Die endgültige Begrüßungsnachricht ausgeben
- Nach der Verarbeitung aller Personen eine Zusammenfassungsnachricht erstellen:
- Ein Zeichen-Array namens
summarymit 100 Elementen erstellen strcpy()verwenden, um "Total people processed: " insummaryzu kopieren- Die Zahl
nin einen String umwandeln undstrcat()verwenden, um sie ansummaryanzuhängen - Die Zusammenfassungsnachricht ausgeben
- Ein Zeichen-Array namens
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
SmithSollte Ihre Ausgabe wie folgt aussehen:
Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2Diese Herausforderung testet Ihr Verständnis für die Verwendung von strcat() zum Verketten mehrerer Strings, kombiniert mit strcpy() für die initiale String-Einrichtung und dem schrittweisen Aufbau komplexer Strings aus mehreren Komponenten.
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;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-Funktionen