簡體   English   中英

C-strcpy指針

[英]C - strcpy pointer

我想問一下strcpy。 我在這里有問題。 這是我的代碼:

char *string1 = "Sentence 1";
char *string2 = "A";

strcpy(string1, string2);

我認為我的代碼沒有問題。 string1和string2中第一個字符的地址發送到函數strcpy 這段代碼應該沒有問題,對吧? 任何人都可以幫助我解決這個問題或向我解釋。

謝謝。

有一個問題-每個指針都指向您無法寫入的內存; 它們指向編譯器構建到您的應用程序中的常量。

您需要在可寫內存中分配空間(例如,通過char string1[<size>];進行堆棧char string1[<size>];或者通過char *string1 = malloc(<size>);進行堆)。 確保替換為所需的緩沖區空間,並至少為NULL終止添加一個額外的字節。 如果您使用malloc() ,請確保稍后再使用free()

這給出了不確定的行為。 由於歷史原因(字符串文字不是const ),編譯器可能允許這樣做,但是您基本上是在試圖覆蓋您在許多平台上根本無法修改的數據。

從linux手冊頁:

char * strcpy(char * dest,const char * src); strcpy()函數將src指向的字符串(包括終止的空字節('\\ 0'))復制到dest指向的緩沖區。 字符串不能重疊,並且目標字符串dest必須足夠大才能接收副本。

* dest指針存在問題,因為它指向的是字符串文字而不是分配的可修改內存。 嘗試將字符串1定義為char string1[BUFFER_LENGTH]; 或使用malloc()動態分配它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM