Verwendung von strcpy()
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 16 von 63.
Sie haben gelernt, wie man die Länge von Strings mit strlen() ermittelt, aber was ist, wenn Sie den Inhalt eines Strings in einen anderen kopieren müssen? In C können Sie den Zuweisungsoperator (=) nicht verwenden, um Strings zu kopieren, wie Sie es bei regulären Variablen tun würden.
Der Grund dafür ist, dass Strings Zeichen-Arrays sind, und wenn man = bei Arrays verwendet, kopiert man nur die Speicheradresse, nicht den tatsächlichen Inhalt. Hier wird die strcpy()-Funktion aus der <string.h>-Bibliothek unverzichtbar.
#include <stdio.h>
#include <string.h>
char source[] = "Hello";
char destination[20];
strcpy(destination, source); // Kopiert "Hello" in destinationDie Funktion strcpy() nimmt zwei Argumente entgegen: das Ziel-Array (dahin, wo Sie kopieren möchten) und den Quell-String (das, was Sie kopieren möchten). Sie kopiert jedes Zeichen von der Quelle zum Ziel, einschließlich des Null-Terminators.
Es ist entscheidend, dass Ihr Ziel-Array groß genug ist, um den gesamten Quell-String einschließlich des Null-Terminators aufzunehmen. Wenn das Ziel zu klein ist, schreibt strcpy() über die Array-Grenzen hinaus, was zu undefiniertem Verhalten führt.
Diese Funktion ist grundlegend für die String-Manipulation in C und ermöglicht es Ihnen, Strings zu duplizieren, String-Variablen mit vorhandenem Inhalt zu initialisieren und Strings für die weitere Verarbeitung vorzubereiten.
Aufgabe
EinfachSchreibe ein C-Programm, das das Kopieren von Zeichenketten mithilfe der Funktion strcpy() demonstriert. Dein Programm sollte:
- Eine Ganzzahl
neinlesen, die die Anzahl der auszuführenden Zeichenkettenoperationen angibt - Für jede Operation:
- Eine Quellzeichenkette aus der Eingabe einlesen
- Ein Zeichenarray namens
destinationmit 100 Elementen deklarieren strcpy()verwenden, um die Quellzeichenkette in das Zielarray zu kopieren- Sowohl die ursprüngliche Quellzeichenkette als auch die kopierte Zielzeichenkette ausgeben
- Nach allen Operationen demonstrieren, dass die kopierten Zeichenketten unabhängig sind, indem:
- Das erste Zeichen des letzten Zielarrays in 'X' geändert wird
- Die geänderte Zielzeichenkette ausgegeben wird, um zu zeigen, dass sie sich verändert hat
Denke daran, den Header <string.h> einzubinden, um die Funktion strcpy() verwenden zu können.
Deine Ausgabe sollte die Ergebnisse im folgenden Format anzeigen:
Source: [source_string]
Destination: [copied_string]
Source: [source_string]
Destination: [copied_string]
...
Modified last destination: [modified_string]Wenn die Eingabe beispielsweise lautet:
3
hello
world
programmingDeine Ausgabe sollte folgendermaßen aussehen:
Source: hello
Destination: hello
Source: world
Destination: world
Source: programming
Destination: programming
Modified last destination: XrogrammingDiese Aufgabe überprüft dein Verständnis der Verwendung von strcpy(), um den Inhalt einer Zeichenkette von einem Zeichenarray in ein anderes zu kopieren, der korrekten Speicherzuweisung für Zielarrays und der Tatsache, dass kopierte Zeichenketten unabhängig von ihren Quellen sind.
Probier es selbst
#include <stdio.h>
#include <string.h>
int main() {
int n;
scanf("%d", &n);
char source[100];
char destination[100];
// TODO: Schreiben Sie Ihren Code hier
// Verwenden Sie eine Schleife, um n String-Operationen zu verarbeiten
// Für jede Operation:
// - Lesen Sie den Quell-String ein
// - Verwenden Sie strcpy(), um die Quelle in das Ziel zu kopieren
// - Geben Sie beide Strings im erforderlichen Format aus
// TODO: Ändern Sie nach der Schleife das erste Zeichen des letzten Ziels
// und geben Sie den geänderten String aus
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