无法找出为什么字符串被复制两次

时间:2016-01-17 04:31:04

标签: c

我复制了一个字符串,但由于某种原因,该字符串被复制了两次。

bool check(const char* word) {
    // copy the word
    char *copy = malloc(sizeof(word));
    strcpy(copy, word);

    printf("word %s\n", word);
    printf("copy %s\n", copy);

    return false;
}

此功能的输出是

word myWord
copy myWord
myWord

如果我删除' \ n' printf中的字符用于复制,输出更改为

word myWord
copy myWordmyWord

我尝试使用调试器来浏览此代码,但调试器显示副本的值为" myWord"

有谁知道这里可能会发生什么?

1 个答案:

答案 0 :(得分:3)

您需要分配strlen(word) + 1个字节。 sizeof(word)返回存储指针的字节数。