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 StringSobald 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.
Aufgabe
EinfachSchreibe ein C-Programm, das die Stringverkettung mithilfe der Funktion strcat() demonstriert, um personalisierte Nachrichten zu erstellen. Dein Programm sollte:
- Eine Ganzzahl
neinlesen, die die Anzahl der zu verarbeitenden Personen angibt - Für jede Person:
- Den Vornamen aus der Eingabe einlesen
- Den Nachnamen aus der Eingabe einlesen
- Ein Zeichenarray 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 Zeichenarray namens
greetingmit 150 Elementen erstellen strcpy()verwenden, um "Hello, " ingreetingzu kopierenstrcat()verwenden, umfullNameangreetinganzuhängenstrcat()verwenden, um "! Welcome to our program." angreetinganzuhängen- Die abschließende Begrüßungsnachricht ausgeben
- Nach der Verarbeitung aller Personen eine Zusammenfassungsnachricht erstellen:
- Ein Zeichenarray 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 Zeichenarray namens
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
SmithDeine Ausgabe sollte wie folgt aussehen:
Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2Diese 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;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
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Übe selbstständig: Online-C-Compiler