【发布时间】:2013-03-08 23:14:40
【问题描述】:
我对我的 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做得很好。这是人们(尤其是新程序员)忘记的东西,并且会导致各种难以追踪的错误。 -
在程序中,您直接递增了指针,而没有进行复制。因此,即使在执行复制之后,您也可能无法使用该字符串,也无法在程序结束时释放内存。制作指针的副本会有所帮助。
-
优点@Ganesh。
-
@NikBougalis 谢谢!!
标签: c pointers segmentation-fault