头文件:
string.h
函数的声明:
size_t strlen(const char *str)
返回值:
字符串长度
用法:
将字符数组名放入strlen()中,得到的是字符串长度
效果:
计算字符串长度
例子:
#include<stdio.h>
#include<string.h>
int main() {
char str[] = "abcdef";
int sz = strlen(str);
printf("%d", sz);
}
函数的实现:
1.使用计数器的方式
int my_strlen(char* str) {
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
为了和头文件里声明的一样,我们对代码进行改进:
size_t my_strlen(const char* str)
{
const char* str1 = str;//保护原字符串,让str1指向的内容不被改变
while (*str1++);//注意空语句
return(str1 - str - 1);//指针-指针得到中间元素个数,再减去最后的'\0',得到字符串长度
}
2.使用递归的方式
int my_strlen(const char * str)
{
if(*str == '\0')
return 0;
else
return 1+my_strlen(str+1);
}
3.使用指针减指针的方式
//指针-指针的方式
int my_strlen(char *s)
{
char *p = s;
while(*p != ‘\0’ )
p++;
return p-s;
}
为了和头文件里声明的一样,我们对代码进行改进:
size_t my_strlen(const char* str)
{
const char* str1 = str;//保护原字符串,让str1指向的内容不被改变
while (*str1!='\0')
p++;//注意空语句
return(str1 - str );//指针-指针得到中间元素个数
}
例子:
输入一串字符串并计算字符串长度
#include<stdio.h>
int my_strlen(char* str) {
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count-1; //str中还有一个‘\n'要去掉
}
int main() {
char str[100] = { 0 };
int i = 0;
while ((str[i] = getchar()) != '\n') { //循环输入字符
i++;
}
int sz = my_strlen(str);
printf("%d", sz);
}