我的C技能有点生疏,有一天我正在完成任务,并遇到了一些指示。我不知道为什么,但这完全困扰了我。所以,如果解决方案很简单,请原谅我。
我编写了以下代码,将数据复制到另一个指针中。我不想使用memcpy,strcpy或任何其他功能。
char *word = "hello world!";
char *ptra = NULL;
ptra = malloc(strlen(word) + 1);
for (; word != '\0'; word++, ptra++) {
*ptra = *word;
}
*ptra = '\0';
现在,当我编译它时,我得到了一个分段错误。有人可以帮我解决这个问题吗?
答案 0 :(得分:7)
你错过了一个dereferende:循环条件应该是*word != '\0'
:
for (; *word != '\0'; word++, ptra++) {
// ^ Here
*ptra = *word;
}
由于word
是一个指针,它永远不会等于\0
,因此你的循环将超过两个字符串的末尾。