我想将2个字符串文字合并为一个
这是我的职责
char* merge(const char* a, const char* b)
{
char buffer[256]; // <- danger, only storage for 256 characters.
strncpy(buffer, a, sizeof(buffer));
strncat(buffer, " ", sizeof(buffer));
strncat(buffer, b, sizeof(buffer));
strncat(buffer, "\0", sizeof(buffer));
char* x = buffer;
cout <<"ll "<<x<<endl;
for(int i=0;i<3;i++)
{
buffer[i]='p';
}
cout <<"ll "<<x<<endl;
return x;
}
我们假设a =“ Michael”和b = John“
输出(提示)为:
ll迈克尔·约翰
ll ppphael John
我做了一些研究,就像那样,因为x指向在堆栈中分配的数组。我希望x指向只读部分中分配的字符串文字,所以我的输出将是:
ll迈克尔·约翰
ll迈克尔·约翰
我的问题是如何使字符串文字超出字符缓冲区数组[256] = {M,i,c,h,a,e,l,,J,o,h,n,\ 0,0, 0,0,0,0,0 ...,0}
(不要问我为什么做这样的毫无意义的工作,这是为了我的学习,我们不允许使用字符串类型或stl)