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?
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.
Verwenden Sie strncpy ().
%Vor%Das Kopieren von 1999 Zeichen in das 2000-Zeichen-Array lässt das letzte Zeichen für den Null-Terminator.
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.