#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