c语言strlen求字符串长度
时间: 2024-03-13 09:38:33 浏览: 26
在C语言中,可以使用strlen函数来求字符串的长度。但是,strlen函数只能用于求以'\0'结尾的字符串的长度。如果字符串中没有'\0',那么strlen函数会一直向后读取内存,直到遇到'\0'为止,这样可能会导致程序崩溃。因此,我们可以自己编写一个函数来求字符串的长度。常见的方法有三种:普通版、指针运算版和递归版。
1.普通版:
这种方法比较简单,就是使用一个计数器,遍历字符串中的每一个字符,直到遇到'\0'为止。代码如下:
int my_strlen(char* str) {
int count = 0;
while(*str != '\0') {
count++;
str++;
}
return count;
}
2.指针运算版:
这种方法利用指针-指针可以求得字符串的长度。我们定义一个指针start指向字符串的首地址,然后遍历字符串中的每一个字符,直到遇到'\0'为止。最后,我们用当前指针str减去起始指针start,就可以得到字符串的长度。代码如下:
int my_strlen(char* str) {
char* start = str;
while (*str != '\0') {
str++;
}
return str - start;
}
3.递归版:
这种方法使用递归的思想,每次递归调用函数时,将指针向后移动一位,直到遇到'\0'为止。代码如下:
int my_strlen(char* str) {
if (*str == '\0')
return 0;
else
return 1 + my_strlen(str + 1);
}