strlen 字符串长度
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24int my_strlen(char* str) { assert(str); //递归实现 //if (*str != '') // return (1 + my_strlen(str + 1)); //return count; //非递归实现 int count = 0; while (*str != '') { str++; count++; } return count; } int main() { char *str = "abcdef"; int ret = my_strlen(str); printf("%dn", ret); system("pause"); return 0; }
strcpy 字符串拷贝
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20char* my_strcpy(char* dst, const char* src) { assert(dst); assert(src); char* ret = dst; while (*dst++ = *src++) { ; } return ret; } int main() { char dst[] = "abcdef"; char *src = "1234"; my_strcpy(dst, src); printf("my_strcpy: %sn",dst);//结果为 1234 system("pause"); return 0; }
strcat 字符串追加(拼接)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24char* my_strcat(char* dst, const char* src) { assert(dst); assert(src); char* ret = dst; while (*dst != '')//先将dst加到'', { dst++; } while (*dst++ = *src++)//开始拼接 { ; } return ret; } int main() { char dst[] = "abcdef"; char *src = "1234"; my_strcat(dst, src); printf("my_strcat: %sn",dst);//结果为 abcdef1234 system("pause"); return 0; }
strcmp字符串比较
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30int my_strcmp(const char* dst, const char* src) { assert(dst); assert(src); int ret = 0; while (*dst == *src && *dst!='' && src!='') { dst++, src++; } ret = *dst - *src; if (ret > 0) { return 1; } else if (ret < 0) { return -1; } return 0; } int main() { char *dst = "abcdef"; char *src = "abcd"; int ret = my_strcmp(dst, src); printf("my_strcmp ret is: %dn",ret);//结果为1 system("pause"); return 0; }
strstr 在中查找另一个字符串
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41const char *my_strstr(const char *dst, const char *src) { assert(dst); assert(src); if (*src == '')//如果为'',则说明没有字符,返回NULL { return NULL; } const char *p1 = dst;//指向开始 const char *p2 = src; char *q = NULL;// while (*p1 != '')//从哪里开始 { q = p1;//每次都更新 p2 = src;//每次都从最开始匹配 //查找子串 while (*p2 && *p1 == *p2 && *p1) { p1++; p2++; } if (*p2 == '')//到这说明p2与p1匹配完了,即比较完了 { return q; } //没有找到,继续++看下一个是否可以匹配 p1++; } return NULL;//没有找到返回NULL } //测试 int main() { //用指针定义一个变量str,在栈上指向字符常量区的字符串,不能直接被修改,所以加const较好,可以提前发现错误 const char *str = "abcdef"; const char *sub_str = "cd"; printf("%sn", my_strstr(str, sub_str)); system("pause"); return 0; }
最后
以上就是震动老师最近收集整理的关于C语言: @ 模拟实现字符串操作函数(strlen、strcpy、strcat、strcmp、strstr )的全部内容,更多相关C语言:内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复