字串操作函式的模擬實現(求大佬指教)
阿新 • • 發佈:2018-12-19
以下僅是自己實現的程式碼,當然裡面存在一些問題。望各位大佬能指點一二,指出其中指標使用不當之處,並指導const的用法。
#include <stdio.h> #include <string.h> char* my_strcpy(char dest[], char* souce) { char* d = dest; char* s = souce; while (*s != '\0') { *d = *s; d++; s++; } return d; } char* my_strcat(char* arr,char* cat,int sz) { char *c = cat; char *a = &arr[sz]; while (*c != '\0') { *a = *c; a++; c++; } return a; } char* my_strstr(char* tatol, char* arr, int sz) { char* t = tatol; char* a = arr; while (*t != '\0') { if (*t == *a) { t++; a++; if (*a == '\0') return t - sz; } else { t++; } } return NULL; } char* my_strchr(char* tatol, char c) { char* t = tatol; char* pc = &c; while (*pc != *t) { t++; } if (*pc == *t) { return pc; } else return NULL; } int my_strcmp(char* tatol, char* arr) { while ((*tatol != '\0') || (*arr != '\0')) { if (*tatol == *arr) { tatol++; arr++; } else if (*tatol < *arr) { return -1; } else { return 1; } } return 0; } char* my_memcpy(char* dest, char* souce, int n ) { int i = 0; char* d = dest; char* s = souce; for (i=0; i<5; i++) { while (*s != '\0') { *d = *s; d++; s++; } } return d; } int main() { char tatol[128] = "penta kill"; char arr[128] = "penta"; char str[128] = { 0 }; char cat[128] = " kill"; char c = 't'; int sz = strlen(arr); my_strcpy(str, arr); printf("%s\n", str); my_strcat(arr, cat, sz); printf("%s\n", arr); printf("%p\n", my_strstr(tatol, arr, sz)); printf("%p\n", my_strchr(tatol, c)); printf("%d\n", my_strcmp(tatol, arr)); printf("%s\n", my_memcpy(str, tatol, 5)); return 0; }