2016-11-24 76 views
-6

這裏有一個短代碼,但它不會編譯。任何想法出了什麼問題?複製字符串的C++ strcpy

char *str; 
strcpy(str, "Hello world"); 
cout << str[6] << ' ' << &str[6] << endl; 
+0

當你做到這一點,*,其中*確實指針'str'點? –

+0

對不起,它在一個int main()函數中 –

+0

另外,當發佈關於構建錯誤的問題時,請在問題主體中包含完整的未編輯的錯誤。請嘗試創建一個[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve),在其中標出出現錯誤的行(例如註釋)。最後請[閱讀關於如何提出好問題](http://stackoverflow.com/help/how-to-ask)。 –

回答

1

您需要爲您的字符串分配內存。你應該使用malloc,它將內存分配給你的指針。

更多有關When to use malloc for char pointers

嘗試用:

char *str = malloc(sizeof(char) * 1024); 
+1

這不會解決編譯錯誤。另外,如果你解釋爲什麼這可能有幫助,這將是有益的。 – juanchopanza

+0

'char str [16]'會更好一點IMO。 –

+0

我試了一下炭海峽[16] ,它仍然提供了相同的錯誤 嚴重\t代碼\t說明\t項目\t文件\t線\t抑制狀態 錯誤\t C4996 \t「的strcpy」:此函數或變量可能是不安全的。考慮使用strcpy_s代替。要禁用棄用,請使用_CRT_SECURE_NO_WARNINGS。詳細信息請參見在線幫助。 –