本文主要是介绍模拟实现strcmp、strstr、memcpy、memmove,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#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);elseprintf( "%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;
}
这篇关于模拟实现strcmp、strstr、memcpy、memmove的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!