用字符数组创建字符串文字

时间:2018-11-11 14:47:00

标签: arrays string string-literals

我想将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)

0 个答案:

没有答案