目录
一.strlen函数的实现
二.strcpy函数的模拟实现
三.strcat函数的实现
四.strcmp函数的模拟实现
一.strlen函数的实现
strlen函数是用来计算字符串长度的
打开cplusplus.com - The C++ Resources Network
这里介绍三种模拟实现strlen函数的方法
1.计数器方法
int my_strlen(char *arr) { int count = 0; while(*arr = '') { arr++; count++; } return count; } int main() { char arr[] = "abcdef"; int len = my_strlen(arr); printf("%dn", len); return 0; }
2.指针-指针方法
int my_strlen(char *arr) { char *end = arr; char *start = arr; while(*end != '') { end++; } return end - start; } int main() { char arr[] = "abcdef"; int len = my_strlen(arr); printf("%dn", len); return 0; }
3.递归方法(不创建临时变量的方法)
递归的调用过程:
int my_strlen(char *arr) { if(*arr != '') { return 1 + my_strlen(1 + arr); } else { return 0; } } int main() { char arr[] = "abcdef"; int len = my_strlen(arr); printf("%dn", len); return 0; }二.strcpy函数的模拟实现
strcpy函数:打开cplusplus.com查看。
代码实现:
char* my_strcpy(char *start, char *end) { assert(start); assert(end); char *ret = start; //拷贝end里面的字符串到start的空间里面去 while (*start++ = *end++ ) { ; } return ret; } int main() { char arr1[20] = "abc"; char arr2[] = "def"; printf("%sn", my_strcpy(arr1, arr2)); return 0; }三.strcat函数的实现
strcat函数概述:
内存分布:
此函数也是从目的字符串后开始进行拷贝追加:
strcat函数的模拟实现:
代码实现:
char * my_strcat(char *dest, const char* src) { char *ret = dest; assert(dest); assert(src); //找到追加的位置 while (*dest != '') { dest++; } //追加 while (*dest++ = *src++) { ; } return ret; } int main() { char arr1[20] = "hello"; char arr2[] = "world"; my_strcat(arr1, arr2); printf("%sn", arr1); }四.strcmp函数的模拟实现
strcmp函数概述:
strcmp函数的模拟实现:
代码实现:
int my_strcmp(const char* str1, const char* str2) { assert(str1); assert(str2); while (*str1 == *str2) { if (*str1 == '') { return 0; } str1++; str2++; } return (*str1 - *str2); } int main() { char* p1 = "abcdefd"; char* p2 = "adqwe"; int ret = my_strcmp(p1, p2); printf("ret = %dn", ret); }
.........
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)