您的位置:首页 > 其它

strdup()函数实现

2016-07-29 17:25 417 查看
#include<iostream>
#include<stdio.h>
#include<assert.h>

char * my_strdup(char *src);
char *my_strdup(char *src)
{
if(NULL == src)
{
return NULL;
}
char *p_src = NULL;
p_src = src ;
int count = 0 ;
while(*p_src != '\0')
{
count++;
p_src++;

}
char * new_addr  = (char *)malloc(sizeof(char)*(count+1));
p_src = src;
while(*p_src  != '\0')
{
*new_addr++ = *p_src++;

}
*new_addr = '\0';
return (new_addr -(count));

}
int main()
{

char src[] = "liusenlin";
printf("之前地址:\n");
printf("%p\n",src);
char *result  = NULL;
result = my_strdup(src);
printf("字符串拷贝后地址:\n");
printf(" %p\n",result);
printf("%s\n",result);
free(result);
return 0;
}


运行结果:

之前地址:

0018FF3C

字符串拷贝后地址:

005006D0

liusenlin

Press any key to continue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数