String in String kopieren - Verständnisfrage



  • Hallo!

    Ich möchte einen String in einen anderen kopieren, und hier frage ich nicht nach den Methoden - da die ja im Internet zu finden sind, sondern Folgendes:

    Angenommen ich habe zwei Strings:

    char *one = "StringOne";
    char *two;
    

    und jetzt möchte ich string one in string two kopieren, wenn ich folgendes mache:

    two = one;
    

    dann wird ja nur die Adresse von one in den zweiten String kopiert, richtig? Also wird beim ändern von one auch two geändert?!

    Meine Frage ist jetzt, wie ich das vermeide, wie kopiere ich einen String in den anderen, dass dieser dann unabhängig vom ersten ist, sprich: wenn ich string one in two kopiere, möchte ich, dass wenn ich one ändere two gleich bleibt!!



  • tinchi schrieb:

    ... wie kopiere ich einen String in den anderen, dass dieser dann unabhängig vom ersten ist, sprich: wenn ich string one in two kopiere, möchte ich, dass wenn ich one ändere two gleich bleibt!!

    Du musst ihn kopieren. Z.B mit strcpy . Das wurde extra dafür gemacht.
    Allerdings muss das Ziel über ausreichend (beschreibbaren) Speicher verfügen, damit er den String aufnehmen kann.

    char *one = "StringOne";
    char *two_p;
    
    two_p = malloc(strlen(one)+1);
    strcpy(two_p, one);
    
    // oder auch 
    char two_a[10];  // Mindestgröße für dieses Beispiel
    strcpy(two_a, one);
    

    Arrays werden aber am Ende ihres Gültigkeitsbereichs zerstört.



  • Ah ok, ich glaube das ist jetzt einiges klarer. Vielen Dank!


Anmelden zum Antworten