下面分别使用字符数组、字符指针作为函数参数模拟实现strlen函数,以及使用递归实现strlen函数。
代码如下:
#include <stdio.h>
//函数声明
unsigned int my_strlen(const char str[]); //用字符数组作为函数参数,计算字符串的长度
unsigned int my_strlen1(const char *pstr);//用字符指针作为函数参数,计算字符串的长度
int main(void)
{
char str[80];
printf("Input a string:");
gets(str); //可以读取空格符
printf("The length of the string is:%u\n",my_strlen(str));
//printf("The length of the string is:%u\n",my_strlen1(str));
return 0;
}
//函数定义
unsigned int my_strlen(const char str[]) //const是保证实参不被改变
{
int i = 0;
unsigned int len = 0;
for(i=0;str[i]!='\0';i++) //循环直至遇到字符串结束符'\0'
{
len++;
}
return len; //返回实际字符个数
}
unsigned int my_strlen1(const char *pstr)
{
unsigned int len = 0;
for(;*pstr!='\0';pstr++)
{
len++;
}
return len;
}
程序运行结果:
追加:递归实现strlen
代码如下:
//用递归实现的 strlen函数
#include <stdio.h>
int my_strlen3(char *str);
int main()
{
int len;
char str[100];
printf("输入一个字符串:");
scanf("%s",str);
len = my_strlen3(str);
printf("%d\n",len);
return 0;
}
int my_strlen3(char *str)
{
if(*str != '\0')
{
return my_strlen3(++str)+1;
}
else
{
return 0;
}
}
运行结果: