用三种方法计算字符串的长度:
字符串:“abcd”,在储存的时候,字符串的最后一位会以一个终止符 '\0',所以求取的就是终止符前的字符数。
1.计数器方式
通过设置一个计数器,然后用指针字符串从头扫描,每扫描一个字符计数器就+1,直到 ‘\0’ 就停止计数,返回计数器的结果,
int my_strlen1(char* str)
{int count = 0;while ('\0' != *str){count++;str++;}return count;
} 
2.递归方法
通过对每次获取一个字符的方式对字符串进行递归,知道获取的字符为‘\0’就停止。
int my_strlen2(char* str)
{if ('\0' != *str){return (1 + my_strlen2(str + 1));}elsereturn 0;
} 
3.指针方法
通过指针头*start指向字符串的首位,在设置个指针尾*end指向终止符 '\0',通过end - start就可以计算出字符串的长度。
这里因为数组是一块连续的空间,所以可以使用 end - start 并且为char类型占一个byte所以相减的数就是其存有的字符数。
int my_strlen3(char* str)
{char* start = str;char* end = str;while (*end != '\0'){end++;}return end - start;
} 
最后整合所有代码:
//1.计数器方式
int my_strlen1(char* str)
{int count = 0;while ('\0' != *str){count++;str++;}return count;
}
//2.递归方式
int my_strlen2(char* str)
{if ('\0' != *str){return (1 + my_strlen2(str + 1));}elsereturn 0;
}
//3.指针方法
int my_strlen3(char* str)
{char* start = str;char* end = str;while (*end != '\0'){end++;}return end - start;
}
int main()
{char arr[] = "abcd";int count1 = my_strlen1(arr);int count2 = my_strlen2(arr);int count3 = my_strlen3(arr);printf("%d\n", count1);printf("%d\n", count2);printf("%d\n", count3);
} 
运行结果:

这里有两个求字符串的方法:
strlen函数:专门争对字符串长度库函数<string.h>里头的函数,使用时需要引用库函数,其原理就是计算 '\0'之前的字符串长度。
sizeof:内存容量度量函数,不用进行引用,但其计算的是整个数组所含的所有字符包括 '\0',因此使用时 -1 就为字符串长度。
这里也有一个C语言库函数的网站:cplusplus.com
进入这个网站,可以查看库函数以及其他C语言函数的使用方法,与其定义。

















