将数据从一个指针复制到另一个seg错误

时间:2013-03-08 23:14:40

标签: c pointers segmentation-fault

我的C技能有点生疏,有一天我正在完成任务,并遇到了一些指示。我不知道为什么,但这完全困扰了我。所以,如果解决方案很简单,请原谅我。

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

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

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

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

*ptra = '\0';

现在,当我编译它时,我得到了一个分段错误。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:7)

你错过了一个dereferende:循环条件应该是*word != '\0'

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

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