模拟实现strcmp、strstr、memcpy、memmove

来源:互联网 发布:手机录音软件排行 编辑:程序博客网 时间:2024/06/04 20:10
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <assert.h>#include <windows.h>  #include <stdlib.h>#模拟实现memmove函数void *my_memmove(void *dest,const void *src,size_t count)  {   void *ret = dest;   assert(dest);   assert(src);   if((src<dest)&&((char*)dest<(char*)src+count))   {    while(count--)    {     *((char*)dest+count)=*((char*)src+count);    }   }   else   {    while(count--)    {     *(char*)dest=*(char*)src;     dest=(char*)dest+1;     src=(char*)src+1;    }   }   return ret;  }  int main()  {   int i=0;   int arr[]={1,2,3,4,5,6,7,8,9,0};   int sz=sizeof(arr)/sizeof(arr[0]);      my_memmove(arr+3,arr,4*sizeof(int));      for(i=0;i<sz;i++)   {    printf("%d ",arr[i]);   }     return 0;  }  #模拟实现memcpy函数void* my_memcpy(void* dest, const void* src,size_t count)  {   void *ret = dest;   assert(dest);   assert(src);   while(count)   {    *(char *)dest = *(char *)src;    dest = (char *)dest+1;    src = (char *)src+1;    count--;   }   return ret;  }  int main()  {   char arr[] = {"hello"};   char str[] = {"bit"};   int sz = sizeof(arr)/sizeof(arr[0]);   int i=0;   char *ret=my_memcpy(arr,str,7);   printf("%s\n",ret);   return 0;  } #模拟实现strstr函数 char *my_strstr(const char *str, char *string){    int i=0;    assert(str&&string);       while('\0'!=str)           {       while(1)      {        if(string[i]!=str[i])             break;        if(string[i]=='\0')                return str;        i++;      }      string++;    }    return NULL;}int main(){   char string[] = "bcde";   char str[] = "abcdef";    char *p=my_strstr(str,string);   int result=p-str+1;       if(p!=NULL)         printf("%s found at position %d\n\n", string,result);    else       printf( "%s not found\n", string);    return 0;}#模拟实现strcmp函数int my_strcmp(const char *str1, const char *str2)  {      assert(str1);      assert(str2);      while (*(str1) == *(str2))      {          if (*str1 == '\0')              return 0;         str1++;          str2++;      }     return *str1 - *str2;}  int main()  {      char *p1 = "ab";      char *p2 = "abcd";           printf("%d\n", my_strcmp(p1, p2));                    return 0;  }  
阅读全文
0 0
原创粉丝点击