strlen:
1.计数器版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include<stdio.h> #include<string.h> #include<assert.h> int my_strlen( const char *str) { int count =0; assert (str!=NULL); while (*str!= '\0' ) { count++; str++; } return count; } |
2.递归的版本
1
2
3
4
5
6
7
|
int my_strlen( const char *str) { assert (str != NULL); if (*str == '\0' ) return 0; return (my_strlen(++str)+1); } |
3.指针-指针版本
1
2
3
4
5
6
7
8
9
10
11
|
int my_strlen( const char *str) { char *end = str; assert (str!=NULL); assert (end!=NULL); while (*end != '\0' ) { end++; } return end - str; } |
strcat:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include<stdio.h> #include<string.h> #include<assert.h> char *my_strcat( char *dest, char *str) { char *ret=dest; //存dest的首地址 assert (dest&&str); while (*dest) { dest++; } while (*dest++=*str++); dest=ret; return dest; } |
strcmp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
int my_strcmp( char *str1, char *str2) { assert (str1&&str2); while (*str1==*str2) { if (str1== '\0' &&str2== '\0' ) return 0; str1++; str2++; } if (*str1>*str2) return 1; return -1; //或return str1-str2; } |
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://blog.csdn.net/weixin_61675401/article/details/122204494