Tri*_*7er 1 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';
Run Code Online (Sandbox Code Playgroud)
现在,当我编译它时,我得到一个分段错误.有人可以帮我解决这个问题吗?
你错过了一个dereferende:它应该*word != '\0'处于循环条件:
for (; *word != '\0'; word++, ptra++) {
// ^ Here
*ptra = *word;
}
Run Code Online (Sandbox Code Playgroud)
因为word是一个指针,它永远不会等于\0,所以你的循环将超过两个字符串的末尾.