如何连接或复制char*?
char* totalLine;
const char* line1 = "hello";
const char* line2 = "world";
strcpy(totalLine,line1);
strcat(totalLine,line2);
Run Code Online (Sandbox Code Playgroud)
此代码产生错误!
segmentation fault
Run Code Online (Sandbox Code Playgroud)
我猜我需要为totalLine分配内存?
另一个问题是,以下复制内存或复制数据?
char* totalLine;
const char* line1 = "hello";
totalLine = line1;
Run Code Online (Sandbox Code Playgroud)
提前致谢!:)
Oli*_*rth 15
我猜我需要为totalLine分配内存?
是的,你猜对了. totalLine是一个未初始化的指针,所以这些strcpy调用试图写入内存中随机的某个地方.
幸运的是,当你标记这个C++时,你不需要为此烦恼.只需这样做:
#include <string>
std::string line1 = "hello";
std::string line2 = "world";
std::string totalLine = line1 + line2;
Run Code Online (Sandbox Code Playgroud)
无需内存管理.
执行以下复制内存或复制数据?
我认为你的意思是"是复制的底层字符串,还是指针?".如果是这样,那么只是指针.
是的,你需要分配内存totalLine.这是一种方法; 它恰好是我推荐的方式,但还有许多其他方法同样好.
const char *line1 = "hello";
const char *line2 = "world";
size_t len1 = strlen(line1);
size_t len2 = strlen(line2);
char *totalLine = malloc(len1 + len2 + 1);
if (!totalLine) abort();
memcpy(totalLine, line1, len1);
memcpy(totalLine + len1, line2, len2);
totalLine[len1 + len2] = '\0';
Run Code Online (Sandbox Code Playgroud)
[编辑:我写这个答案假设这是一个C问题.在C++中,正如Oli建议的那样,只需使用std::string.]