1

我对我的 C 技能有点生疏了,前几天我正在做一项作业,遇到了一些指示。我不知道为什么,但这完全把我难住了。因此,如果解决方案微不足道,请原谅我。

我编写了以下代码以将一个指针中的数据复制到另一个指针。我不想使用 memcpy、strcpy 或任何其他函数。

char *word = "hello world!";
char *ptra = NULL;

ptra = malloc(strlen(word) + 1);

for (; word != '\0'; word++, ptra++) {
    *ptra = *word;
}

*ptra = '\0';

现在,当我编译它时,我得到一个分段错误。谁能帮我解决这个问题?

4

1 回答 1

6

您缺少一个取消引用:它应该*word != '\0'处于循环条件中:

for (; *word != '\0'; word++, ptra++) {
    // ^ Here
    *ptra = *word;
}

因为word是一个指针,它永远不会等于\0,所以你的循环将超过两个字符串的末尾。

于 2013-03-08T23:16:15.800 回答