函数名: strdup
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
但是在vs /keil5 IDE 中的string.h未找到strdup 函数,所以在重新函数实现。
#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