【发布时间】:2016-05-10 08:02:23
【问题描述】:
我正在努力在 C 中实现 strdup(),我是 C 新手,我正在尝试构建自己的库。我正在使用来自string.h 的实际strdup() 来测试我的,当我针对主程序测试我的源代码时遇到了总线错误,但当我使用实际的strdup() 时却没有。我也不能使用除malloc()之外的任何现有功能。
源代码:
#include <stdlib.h>
char *ft_strdup(char *src)
{
char *str;
int len;
while (src[len])
len++;
str = (char*)malloc(sizeof(*str) * (len+1));
while (*src)
*str++ = *src++;
*str = '\0';
return (str);
}
为什么我总是收到总线错误?
【问题讨论】:
-
你错过了用0初始化
len -
我是 C 新手,我正在尝试构建自己的库——通常不是一个好主意。在I started my own standard library 之前,我已经使用 C 多年了,多年后我仍然在使用它。
<string.h>函数一般来说很简单,但是你会很快遇到问题(或者太天真地实现这些函数,让你的项目崩溃得令人沮丧)。第一步,在标准库的用户端尝试一些东西。 -
@user3121023 谢谢,如何将指针返回到开头?
-
@user3121023 没关系,感谢我破解它的一切。
-
strdup() 不是标准库的一部分,因此在某些情况下(例如将依赖它的代码移植到其他系统),您需要自己实现。
标签: c