Menu
Coddy logo textTech

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 destination

Die 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.

challenge icon

Aufgabe

Einfach

Schreibe ein C-Programm, das das Kopieren von Zeichenketten mithilfe der Funktion strcpy() demonstriert. Dein Programm sollte:

  1. Eine Ganzzahl n einlesen, die die Anzahl der auszuführenden Zeichenkettenoperationen angibt
  2. Für jede Operation:
    • Eine Quellzeichenkette aus der Eingabe einlesen
    • Ein Zeichenarray namens destination mit 100 Elementen deklarieren
    • strcpy() verwenden, um die Quellzeichenkette in das Zielarray zu kopieren
    • Sowohl die ursprüngliche Quellzeichenkette als auch die kopierte Zielzeichenkette ausgeben
  3. 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
programming

Deine Ausgabe sollte folgendermaßen aussehen:

Source: hello
Destination: hello
Source: world
Destination: world
Source: programming
Destination: programming
Modified last destination: Xrogramming

Diese 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;
}
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