C語言::模擬實現strlen函數


題目要求

編寫一個C語言程序模擬實現strlen函數.

算法

strlen函數功能是計算字符串中字符的個數.(除\0外)

而字符串本身就是一個字符數組,只不過末尾以\0結束.

因此,我們只需遍歷除\0之外的所有字符即可.

有三種方法可以解決這個問題.

算法總結

方法一:設置一個整型計數器,遍歷字符串.

方法二:通過不斷函數自身的遞歸.

方法三:與方法一類似,設置一個char*變量標記字符串尾部,通過指針相減得到字符長度.

核心代碼

//方法一:通過設置整型計數器,模擬實現strlen函數.
int my_strlen1(const char *str){
	assert(str);
	int count = 0;
	while(*str++){
		count++;
	}
	return count;
}
//方法二:通過遞歸,模擬實現strlen函數
int my_strlen2(const char *str){
	assert(str);
	if(*str){
		return (1+my_strlen2(str+1));
	}
		return 0;
}
//方法三:通過char*變量,模擬實現strlen函數
int my_strlen3(const char *str){
	const char *end = str;
	assert(str);
	while(*end++){
		;
	}
	return (end-str-1);
}

完整測試代碼

/*
*本代碼版權歸高小調博客所有 
*作者:行不更名,坐不改姓的博主高小調
*日期:2015-7-31
*代碼功能:三種方式模擬實現strlen函數 
*搜集整理:高小調博客-(http://gaoxiaodiao.com) 
*/
#include
#include
//方法一:通過設置整型計數器,模擬實現strlen函數.
int my_strlen1(const char *str){
	assert(str);
	int count = 0;
	while(*str++){
		count++;
	}
	return count;
}
//方法二:通過遞歸,模擬實現strlen函數
int my_strlen2(const char *str){
	assert(str);
	if(*str){
		return (1+my_strlen2(str+1));
	}
		return 0;
}
//方法三:通過char*變量,模擬實現strlen函數
//(庫函數中的strlen函數就是這么干的)
int my_strlen3(const char *str){
	const char *end = str;
	assert(str);
	while(*end++){
		;
	}
	return (end-str-1);
}
int main(){
	char str[]="abcdef";
	printf("str長度是:%d\n",my_strlen1(str));
	printf("str長度是:%d\n",my_strlen2(str));
	printf("str長度是:%d\n",my_strlen3(str));
	return 0;
}

輸出

strlen函數輸出結果

    本代碼用到的函數列表
  1. printf()函數功能、原型、用法和實例
  2. assert()宏功能、原型、用法和實例
  3. strlen()函數功能、原型、用法及實例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM