一,模拟strcmp函数
//模拟strcmp函数 #include <stdio.h> int my_strcmp(char* s1,char* s2) { while (*s1==*s2) { if (*s1=='\0') { return 0; } s1++; s2++; } return *s1 - *s2; } int main(){ int ret = my_strcmp("abcd","abc"); if (ret >0) { printf("s1>s2\n"); } else if (ret == 0) { printf("s1=s2\n"); } else { printf("s1<s2\n"); } return 0; }
二,模拟strstr函数
#include <stdio.h> #include <assert.h> const char* my_strtstr(const char* str1,const char* str2) { assert(str1); assert(str2); const char* cp = str1; const char* s1 = NULL; const char* s2 = NULL; if (*str2=='\0') { return str1; } while (*cp) { s1 = cp; s2 = str2; while (*s1==*s2 && *s1!='\0' && *s2!='\0') { s1++; s2++; } if (*s2=='\0') { return cp; } cp++; } return NULL; } int main(){ char arr1[] = "abbbcde"; char arr2[] = "bbc"; char* ret = my_strtstr(arr1, arr2); if(ret!=NULL) { printf("找到了"); } else { printf("找不到"); } return 0; }
三,模拟strncpy函数
#include <stdio.h> #include <assert.h> char* my_strncpy(char* dest, const char* src,size_t len) { char* ret = dest; assert(dest); assert(src); int i = 0; while (i<len) { *dest++ = *src++; i++; } return ret; } int main(){ char str1[] = "abcdef"; char str2[10] = { 0 }; printf("%s\n",my_strncpy(str2,str1,2)); return 0; }
四,模拟strncat函数
#include <stdio.h> #include <assert.h> char* my_strncat(char* dest, const char* src,size_t len) { char* ret = dest; assert(dest && src); while (*dest != '\0') { dest++; } int i = 0; while (i<len) { *dest++ = *src++; i++; } return ret; } int main(){ char str3[20] = "hello "; char str4[] = "world"; printf("%s\n", my_strncat(str3, str4, 3)); return 0; }
五,模拟mecpy函数
#include <stdio.h> #include <assert.h> void* my_memcpy(void *dest,const void* src ,size_t num) { void* ret = dest; assert(dest && src); while (num--) { *(char*)dest=*(char*)src; dest=(char*)dest + 1; src = (char*)src + 1; } return ret; } int main(){ int arr1[10] = { 0 }; int arr2[] = { 1,2,3,4,5,6,7,8,9 }; my_memcpy(arr1,arr2,20);//20个字节,复制5个int for (int i=0;i<10;i++) { printf("%d ",arr1[i]); } return 0; }