程序中有三种计算字符串长度的方法:一是递归法;二是遍历查找法;三是调用函数strlen()
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int my_strlen1(const char *str)//递归
{
//三元操作符进行判断是否继续进行递归
return ('\0' != *str) ? (1+my_strlen1(++str)) : 0;
}
int my_strlen2(const char *str)//遍历查找
{
int count = 0;
while (*str != '\0') //如果str当前字符不是结束符则继续
{
count++; //长度加1
str++; //指针向后移动一位
}
return count;
}
int main()
{
char *p;
p = (char *)malloc(100*sizeof(char)); //动态申请容量为100的字符串指针
printf("please input your strings:\n");
while (scanf("%s",p) != EOF)
{
//输入字符串,scanf()区分一次字符串输入结束的标志是空格键,而本程序循环等待用户输入结束的标志是换行
int count1 = 0,count2 = 0,count3 = 0;
//分别使用三个变量来记录三种长度测试方法得出的长度
count1 = my_strlen1(p);
count2 = my_strlen2(p);
count3 = strlen(p);
printf("count1 = %d, count2 = %d, coont3 = %d\n",count1,count2,count3);
}
free(p); //释放申请空间
return 0;
}