求字元串的長度
有兩種方法
第一種:
非遞歸:思想很簡單就是調用<string.h>庫函數中的strlen()函數即可
代碼如下所示:
#include<stdio.h>
#include<string.h>
int main()
{
char *str = "hello";
int len = strlen(str);
printf("%d\n", len);
return 0;
}
第二種:
遞歸:思想就是大問題化成小問題,求字元串長度莫非就是字元串中的字母個數相加,例如hello就是5個字母即它的字元串長度就是5。遞歸滿足的兩個條件是:1.自己調用自己;2.終止條件
而怎麼算把字元串讀完,當遇到’\0’時就停止了,是以這個即是遞歸函數的終止條件;而怎麼調用自己呢,我們知道字元串長度可以是h+(ello)的長度,而ello可以是e+(llo)的長度,以此類推,即可以寫出遞歸函數
代碼如下所示:
#include<stdio.h>
#include<string.h>
Mystrlen(char *p)//p是指針變量存放的是字元串首位字元的位址
{
if (*p == '\0')//*p表示間接通路,若字元串位址裡的内容是'\0'即表示字元串長度為0
{
return 0;
}
else//若字元串位址裡的内容不是'\0',則最少傳回1,即字元串中有一個字元
{
return 1 + Mystrlen(p + 1);
}
}
int main()
{
char *str = "hello";
int len = Mystrlen(str);
printf("%d\n", len);
return 0;
運作結果如下所示:
