c语言求字符串的长度 |
您所在的位置:网站首页 › c语言怎么比较字符串长度 › c语言求字符串的长度 |
c语言求字符串的长度——四种方式
1.利用strlen函数.
注:strlen函数在使用之前要引头文件#include #include #include int main()//一般方法 { char arr[] = "bit102"; printf("%d ", strlen(arr)); return 0; } 2.利用自定义函数 #include #include int my_strlen(char* str)//数组需要定位,所以创建指针变量 //用自定义函数求字符串的长度 { int c = 0; while (*str != '\0') { c++; str++; } return c; } int main() { char arr[] = "bit"; printf("%d ", my_strlen(arr)); return 0; } 3.利用函数的递归 #include #include int my_strlen(char* str) { if (*str != '\0') { return 1 + my_strlen(str + 1);//str+1代表着数组的下标. } else { return 0; } } int main() { char arr[] = "bit"; printf("%d ", my_strlen(arr)); return 0; }在这里为什么不使用str++或++str来代替str+1呢? 原因如下:(1)首先要知道这个程序中递归的原理:my_strlen("bit")=1+my_str_len("it")=1+1+my_strlen("t")=1+1+1+my_strlen("\0")=1+1+1+0=3 所以每次递归都是将字符的第一位与\0进行比较,因此str+1则是将比较过后的第一位去掉,然后进行下一次的比较,并且下一次仍然是比较第一位与\0的关系,同时去掉已经比较过的字符,所以str在这个过程中是不变的。那么如果使用str++,就会造成str自增,那么会导致str的值发生变化,不能达到递归的效果。(自己的理解) 4.利用指针运算 int my_strlen(char* str) { char*start = str; while (*str != '\0') { str++; } return str - start; } int main() { int len = my_strlen("abc"); printf("%d ", len); return 0; }指针-指针等于两个指针之间的元素个数;利用指针的运算得到字符串的长度; |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |