<span style="font-size:24px;">//strcpy</span><span style="font-size:18px;">
</span><span style="font-size:24px;">#include<stdio.h>
#include<assert.h>
char* my_strcpy(char *str1,const char *str2)
{
char *ret=str1;
assert(str1);
assert(str2);
while(*str2 != '\0')
{
*str1++=*str2++;
}
return ret;
}
int main()
{
char arr1[]="abcdefg";
char arr2[20]={0};
my_strcpy(arr2,arr1);
printf("%s\n",arr2);
return 0;
}</span>
<span style="font-size:24px;">//strncat
#include<stdio.h>
#include<assert.h>
char *my_strncat(char *str1,const char *str2,int num)
{
char *ret=str1;
assert(*str1);
assert(*str2);
while(*str1++)
{
;
}
while(num--)
{
if(!(*str1++=*str2++))
{
return ret;
}
}
}
int main()
{
char arr1[20]="awe are ";
char arr2[]="happy.";
char *ret=my_strncat(arr1,arr2,8);
printf("%s\n",ret);
return 0;
}</span>
<span style="font-size:24px;">//strcmp
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char *dest,const char *src)
{
assert(dest);
assert(src);
while(!(*src-*dest)&&*dest)
{
++src,++dest;
}
return *dest-*src;
}
int main()
{
char arr1[]="hello";
char arr2[]="hgdfsh";
int ret=my_strcmp(arr1,arr2);
printf("%d\n",ret);
return 0;
}</span>
<span style="font-size:24px;">//memcpy
#include<stdio.h>
#include<assert.h>
void *my_memcpy(void *dest,const void *src,size_t count)
{
void *ret=dest;
char *pdest=(char *)dest;
char *psrc=(char *)src;
assert(dest);
assert(src);
while(count--)
{
*pdest++=*psrc++;
}
return ret;
}
int main()
{
char arr1[]="abcde";
char arr2[10]={0};
unsigned int count=sizeof(arr1)/sizeof(arr1[0]);
char *tmp=my_memcpy(arr2,arr1,count);
printf("%s\n",tmp);
}</span>
<span style="font-size:24px;">//memmove
#include<stdio.h>
#include<assert.h>
void *my_memmove(void *dest,const void *src,int num)
{
void *ret=dest;
char *pdest=(char *)dest;
char *psrc=(char *)src;
assert(dest);
assert(src);
if(pdest > psrc)
{
while(num--)
{
*pdest=*psrc;
dest=pdest+num+1;
src=psrc+1;
}
}
else
{
while(num--)
{
*pdest=*psrc;
dest=pdest+1;
src=psrc+1;
}
}
return ret;
}
int main()
{
char arr1[]="abcde";
char arr2[10]={0};
unsigned int count=sizeof(arr1)/sizeof(arr1[0]);
my_memmove(arr2,arr1,count);
printf("%s\n",arr2);
return 0;
}</span>
<span style="font-size:24px;">#include <stdio.h>
#include <string.h>
#include <assert.h>
char *my_strncpy(char *dest,const char *src, int count)
{
char *ret = dest;
assert(dest);
assert(src);
//src---->>"abc"; count=6
while(count && (*dest++ = *src++))
{
count--;
}
if(count > 0)
{
while(--count)
{
*dest++ = '\0';
}
}
return ret;
}</span>
<span style="font-size:24px;"></span><pre name="code" class="html">int main()
{
char arr1[]="abcdefg";
char arr2[20]={0};
my_strcpy(arr2,arr1);
printf("%s\n",arr2);
return 0;
}