计算字符串的长度其原理是:位置差
看下面的详细讲解:
①定义一个字符串s[1000]="ABCDEFG";并给其初始化赋值ABCDEFG;
②既然是靠位置差来计算字符串的长度,所以我们利用指针p的移动,一直移动到末尾的'\0'再结束指针的移动;
③既然此时指针p已经知道末尾'\0'的位置,所以可以用p的地址和s的地址做减法产生的差就是两个地址的差。(即:地址差=p-s)
看下面的程序吧!
#include<stdio.h>
int len(char s[]) //接收主函数传递过来的数组s
{ char *p=s; //定义一个指针p指向数组s的首地址
while(*p) p++; //让指针一直向右移,一直到'\0'截止
return(p-s); //返回指镇所指位置与数组首地址的差值就是字符串的长度
}
int main()
{ char s[1000]; //定义一个足够长的数组
printf("输入字符串");
scanf("%s",s);
printf("%d",len(s)); //调用函数len
}
运行实例: