Kopie eines String-Pointers

7

Ich habe eine Funktion, die einen Eingang und einen Zeiger auf ein Array von Zeichen in C hat. In dieser Funktion manipuliere ich den Hauptstring, aber ich möchte eine Sicherungskopie in einer anderen Variablen machen, bevor ich sie benutze. Ich möchte es in Char-Backup [2000], also wenn der Zeiger ändert das Backup wird sich nicht ändern. Wie kann ich das tun?

    
Syntax_Error 23.03.2011, 16:57
quelle

7 Antworten

11
%Vor%     
wallyk 23.03.2011, 17:01
quelle
9

Um Strings in C zu duplizieren, gibt es eine Bibliotheksfunktion, die strdup genannt wird:

Der von strdup zugewiesene Speicher muss nach der Verwendung mit free freigegeben werden.

strdup stellt die Speicherzuweisung und die Zeichenfolgekopieroperation in einem Schritt bereit. Die Verwendung eines char-Arrays kann problematisch werden, wenn die zu kopierende Zeichenfolge zu einem bestimmten Zeitpunkt größer als die Array-Größe ist.

    
jdehaan 23.03.2011 17:07
quelle
2

Ihre Freunde sind die folgenden Funktionen

  • malloc
  • memset
  • Calloc
  • memcpy
  • strcpy
  • strdup
  • strncpy

Aber der beste Freund ist man :

    
jibril 23.03.2011 20:56
quelle
1

Verwenden Sie strncpy ().

%Vor%

Das Kopieren von 1999 Zeichen in das 2000-Zeichen-Array lässt das letzte Zeichen für den Null-Terminator.

    
Andy Johnson 23.03.2011 17:01
quelle
0

Sie können strcpy verwenden, um vor dem Start eine Kopie Ihres char-Arrays (Zeichenfolge) zu erstellen Modifizieren.

    
Argote 23.03.2011 17:01
quelle
0

Verwenden Sie memcpy, um die Sicherung zu erstellen.

%Vor%     
eat_a_lemon 23.03.2011 17:02
quelle
0

strcpy reference.

%Vor%

Hinweis vom Link.

  

Um Überläufe zu vermeiden, sollte die Größe des Arrays, auf das Ziel zeigt, lang genug sein, um die gleiche C-Zeichenfolge wie die Quelle (einschließlich des abschließenden Nullzeichens) zu enthalten und sollte sich im Speicher nicht mit der Quelle überschneiden.

    
Mahesh 23.03.2011 17:02
quelle

Tags und Links