实现C strcpy但得到段错误

时间:2014-09-06 22:47:13

标签: c cstring

我试图在我的主要内部实现strcpy,但我不确定为什么我会在第一个while循环中进行segfaulting。有人会光明吗?

int main()
{
    const char* src = "this is a test";
    char* dest = "abcdefgqwerty";
    char* head = dest;
    while(*dest++ = *src++);
    while(*head++)
    {
        printf("%c", *head);
    }

    return 0;
}

2 个答案:

答案 0 :(得分:1)

目的地的空间不足以复制您的内容。 dest的声明只包含14个字节,但您需要15个字节。

答案 1 :(得分:1)

dest变量指向字符串文字,实际上它位于只读内存区域。这就是你无法复制的原因。

要测试您的strcpy()实施,我建议将字符串声明为数组:

char dest[256] = "abcdefgqwerty";