【C语言】strlen函数使用及实现方法
1. C库函数strlen()
函数原型 size_t strlen(const char *str)
头文件:string.h
函数说明:计算字符串str的长度,直到空结束字符 '\0',但不包括空结束字符
返回值:返回一个无符号整数
2. 代码演示及运行结果
代码演示
点击查看代码
#include
#include
int main(void){
char *str1 = "strlenTest";
char str2[] = "strlenTest";
char str3[] = {'s', 't', 'r', 'l', 'e', 'n', '\0'};
char str4[] = {'s', 't', 'r', 'l', 'e', 'n'};
printf("strlen(str1) = %ld, sizeof(str1) = %ld\n",strlen(str1), sizeof(str1));
printf("strlen(str2) = %ld, sizeof(str2) = %ld\n",strlen(str2), sizeof(str2));
printf("strlen(str3) = %ld, sizeof(str3) = %ld\n",strlen(str3), sizeof(str3));
printf("strlen(str4) = %ld, sizeof(str4) = %ld\n",strlen(str4), sizeof(str4));
return 0;
}
运行结果
3. 注意事项
- 参数指向的字符串必须以 '\0' 结束
- 字符串以 '\0'结尾,strlen返回的是字符串中 '\0'之前的字符的个数,不包括'\0',sizeof包括'\0'
4. 实现方法
方法1:
代码展示
点击查看代码
#include
size_t strlen_my(const char *str){
int count = 0;
while(*str != '\0'){
str++;
count++;
}
return count++;
}
int main(void){
char *str1 = "strlenTest";
char str2[] = "strlenTest";
char str3[] = {'s', 't', 'r', 'l', 'e', 'n', '\0'};
char str4[] = {'s', 't', 'r', 'l', 'e', 'n'};
printf("strlen_my(str1) = %ld\n",strlen_my(str1));
printf("strlen_my(str2) = %ld\n",strlen_my(str2));
printf("strlen_my(str3) = %ld\n",strlen_my(str3));
printf("strlen_my(str4) = %ld\n",strlen_my(str4));
return 0;
}
运行结果
方法2:
代码展示
点击查看代码
#include
size_t strlen_my(const char *str){
if(*str != '\0'){
return 1 + strlen_my(str+1);
}else {
return 0;
}
}
int main(void){
char *str1 = "strlenTest";
char str2[] = "strlenTest";
char str3[] = {'s', 't', 'r', 'l', 'e', 'n', '\0'};
char str4[] = {'s', 't', 'r', 'l', 'e', 'n'};
printf("strlen_my(str1) = %ld\n",strlen_my(str1));
printf("strlen_my(str2) = %ld\n",strlen_my(str2));
printf("strlen_my(str3) = %ld\n",strlen_my(str3));
printf("strlen_my(str4) = %ld\n",strlen_my(str4));
return 0;
}
运行结果
方法3
代码展示
点击查看代码
#include
size_t strlen_my(const char *str){
const char *start = str;
const char *end = str;
while(*end != '\0'){
end++;
}
return end-start;
}
int main(void){
char *str1 = "strlenTest";
char str2[] = "strlenTest";
char str3[] = {'s', 't', 'r', 'l', 'e', 'n', '\0'};
char str4[] = {'s', 't', 'r', 'l', 'e', 'n'};
printf("strlen_my(str1) = %ld\n",strlen_my(str1));
printf("strlen_my(str2) = %ld\n",strlen_my(str2));
printf("strlen_my(str3) = %ld\n",strlen_my(str3));
printf("strlen_my(str4) = %ld\n",strlen_my(str4));
return 0;
}
运行结果