最近在学习字符串函数,现将关于求解字符串长度的一些方法总结一下
提到字符串长度,我们首先想到的就是strlen函数,值得注意的是,需要在头文件中包含头文件:#include<string.h>
#include<stdio.h>
#include<string.h>
int main()
{
//char arr[]="abcde";
char arr[]={'a','b'};
size_t len=strlen(arr);
printf("%zd\n",len);
return 0;
}
但是值得注意的是,strlen函数的返回值是size_t,无符号(易错)
在这基础上,我们可以自己写一个my_strlen函数解决上述问题
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
int count=0;
assert(str!=NULL);
while(*str!='\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[]={"and"};
size_t len=my_strlen(arr);
printf("%zd\n",len);
return 0;
}
除上述count++的思路,还有一种方法是用最后一个字符('\0'之前)的指针减去第一个字符的指针,就不在此赘述了。
最后,还有一个我从其他处借鉴的方法,那就是使用递归的思路(主函数同上),递归函数如下:
size_t my_strlen(const char* str)
{
if(*str!='\0')
return 1+my_strlen(str+1);
else
return 0;
}
看到这里,不知是否对你有所帮助
欢迎大家在评论区补充自己的思路