簡體   English   中英

對 C++ 中的 strcpy 不了解

[英]Do not understand about strcpy in C++

char* s1;
strcpy(s1,"smilehihi");
s1[6] = 'a';

當我編譯時,VS沒有任何錯誤。 但是在運行時,我的代碼出錯了。 我想我不太了解 strcpy

這里的主要問題不是strcpy() function 而是您沒有為字符串本身分配任何 memory 的事實。 如果我是你,我會做類似的事情

char* s1=(char*)malloc(SIZE); // the SIZE is the predefined maximum size of your string
strcpy(s1,"smilehihi");
s1[6] = 'a';

編輯:

作為建議,請考慮使用stpncpy() 它有助於避免緩沖區溢出,並且在您的情況下,將幫助您避免超過char*的最大大小

char * stpncpy(char * dst, const char * src, size_t len);

問題是您沒有為要存儲在s1中的內容分配任何空間: "smilehihi" 您將s1聲明為指針變量,但它需要指向一些東西。 您可以使用new運算符分配空間。

char* s1 = new char[stringLength + 1]; //stringLength = length of string stored
                                       // + 1 to hold null terminator character
strcpy(s1, "smilehihi");
s1[6] = 'a';

您必須在主文件頂部聲明#define _CRT_SECURE_NO_WARNINGS以避免由於 strcpy() 被棄用而在編譯期間出錯。

您需要首先通過 malloc() 或使用關鍵字 new 分配變量。 最后釋放 memory

首先,您應該分配char* s1

char *s1 = new char[9]; // C++ version

或者您可以使用 C 版本:

char *s1 = (char*)malloc(9);

然后您可以使用以下代碼:

strcpy(s1, "smilehihi");
s1[6] = 'a';

暫無
暫無

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

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