当前位置 : 主页 > 编程语言 > java >

模拟实现不受限制的字符串函数--C语言版

来源:互联网 收集:自由互联 发布时间:2023-02-04
C语言中提供了许多十分好用的库函数,一旦我们掌握了它们,我们使用C语言写代码就会变得更加得心应手。 1.strlen strlen函数就是计算字符串的长度的,它会一直读取到\0,它的返回值

C语言中提供了许多十分好用的库函数,一旦我们掌握了它们,我们使用C语言写代码就会变得更加得心应手。

1.strlen

strlen函数就是计算字符串的长度的,它会一直读取到\0,它的返回值就是在字符串中'\0' 前面出现的字符个数(不包括\0)。 而了解strlen的实现原理也会让我们更好的理解代码

//模拟实现strlen// 计算器版本//#include<stdio.h>//#include<assert.h>//int my_strlen(const char *str)//{// assert(str);// int count = 0;// while (*str++ != 0)// {// count++;// }// return count;//}////int main()//{// char arr[] = {"abcdef"};// int ret = my_strlen(arr);// printf("%d", ret);// return 0;//}复制代码

当然,strlen绝对不止这一种写法,如果各位想看,可以移步​​strlen的三种模拟实现方法​​

2.stccpy

strcpy是将字符串b复制到字符串a上,其中源字符串必须要以\0结束,并且目标字符串必须要有足够大的空间

#include<stdio.h>#include<string.h>void mine_strcpy(char* dest, char* sou){ while (*dest++ = *sou++)//当sou将\0传给dest时,while里面的值是0,自动结束了循环---既copy了\0 //又使循环停止 { ; }}int main(){ char arr1[] = "aaaaaaaaaaaaaa"; char arr2[] = "hello"; mine_strcpy(arr1, arr2); printf("%s\n", arr1); return 0;}复制代码

3.strcat

strcat是字符串追加函数,目标字符串必须要有足够大的空间去容纳原字符串,并且原字符串必须要以\0结尾 strcat的模拟实现:首先需要找到目标字符串的\0位置,接着要在\0的位置,将要复制的字符串拷贝过去即可。

#include<stdio.h>#include<string.h>#include<assert.h>char* my_strcat(char* dest, const char* src){ assert(dest && src); char* ret = dest; //1.找到目标字符串的\0 while (*dest) { dest++; } //2.接着追加过去(包括\0)(就是strcpy的思路) while (*dest++ = *src++) { ; } return ret;}int main(){ char arr1[50] = {"stay foolish,"}; char arr2[20] = {"stay hungry"}; //my_strcat(arr1, arr2); printf("%s", my_strcat(arr1, arr2));//链式访问 return 0;}复制代码

4.strcmp

strcmp就是比较两个字符串的大小 strcmp的实现思路就是一个一个字符的进行比较,知道找到不一样的或者全部一样的为止

//模拟实现strcmp#include<stdio.h>#include<assert.h>int my_strcmp(const char* p,const char* q){ assert(p && q); while (*p == *q) { if (*p == '\0')//*q也为'\0' { return 0; } p++; q++; } //if (*p > *q) // return 1; //else //return -1; return *p - *q;}int main(){ char p[] = "abcd"; char q[] = "abe"; int ret = my_strcmp(p, q); if (ret > 0) printf("p>q\n"); else if (ret < 0) printf("p<q\n"); else printf("p==q\n"); return 0;}复制代码

以上介绍的都是长度不受限制等函数

欢迎点赞收藏关注,感谢大家的支持!

上一篇:(7)oracle数据类型
下一篇:没有了
网友评论