1. 程式人生 > >三種方法:遞迴和非遞迴分別實現strlen

三種方法:遞迴和非遞迴分別實現strlen

不使用庫函式來實現strlen函式: 方法1:設定一個計數器len,當str不是‘\0’時,len++; 方法2:採用遞迴的想法,將大事化小;“abcde”可是轉化為1+“bcde” … 1+1+1+1+“e”。每一次都訪問str的下一個地址,當然跳出遞迴的條件還是str!=0. 方法3:因為指標-指標=之間的元素個數;所以可以採用這個想法將指標首元素地址儲存在*start中, 再採用迴圈將最後一個元素地址與首元素地址相減即可得到元素個數。

程式碼實現:

#include<stdio.h>
int my_strlen1(char *str){
	int len = 0;
	while (*str != 0){
		len++;
		str++;
	}
	return len;
}


int my_strlen2(char *str){
	if (*str != 0){
		return 1 + my_strlen2(str + 1);
	}
	else
		return 0;
}


int my_strlen3(char *str){
	char *start = str;
	while (*str != 0){
		str++;
	}
	return str - start;
}

int main(){
	char str[] = "abcde";
	printf("%d\n", my_strlen1(str));
	printf("%d\n", my_strlen2(str));
	printf("%d\n", my_strlen3(str));
	return 0;
}