string函数的各种实现方式

来源:互联网 发布:亲爱的程序员百度云 编辑:程序博客网 时间:2024/06/05 08:03
<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=6while(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;}



0 0
原创粉丝点击