三種方法實現strlen函式
在我們使用C語言寫程式碼時,我們常常會用到strlen函式,你是否好奇過strlen是如何實現的呢?接下來,我將會使用3種方法實現strlen函式。
1.計數器法
計數器法應該是最常見的strlen實現方法,其基本原理就是透過計數器計算迴圈的次數,從而實現計算字串長度的作用
//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char *str)
//{
// assert(str);
// int count = 0;
// while (*str++ != 0)
// {
// count++;
// }
// return count;
//}
//
//int main()
//{
// char arr[] = {"abcdef"};
// int ret = my_strlen(arr);
// printf("%d", ret);
// return 0;
//}
1.為了防止字串被改變,於是使用const來保護字串,增加程式碼的健壯性 2.使用assert斷言是為了防止傳過來的是空指標
2.遞迴法
遞迴法的主要思想就是要判斷第一字元是不是\0,如果不是就1+下一次函式實現,總的來說就是大事化小的思想。
//遞迴實現strlen
#include<stdio.h>
int my_strlen(char*str)
{
if ((*str) != '\0')
{
return 1 + my_strlen(str + 1);
}
else
return 0;
}
int main()
{
char arr[] = {"abcdef"};
printf("%d", my_strlen(arr));
return 0;
}
3.指標減指標法
首先需要明確,指標減去指標得到的是什麼?是這兩個元素之間的資料的個數。 要使用指標相減,就要找到字串的初末指標,只可以透過尋找\0來實現
//用指標減指標來實現strlen的功能
#include<stdio.h>
int my_strlen(char* str)//str接收首元素a的地址
{
char* start = str;//start裡面裝的是首元素a的地址
while (*str != '\0')//解引用指標str,或者寫成while(*str)---真(更好)
{
str++;//指標/地址++,str是個指標變數
}
return str - start;//指標減指標為兩個指標之間元素的個數
}
int main()
{
int len = my_strlen("abc");
printf("%d", len);
return 0;
}
以上就是strlen的3種實現方法,一個我們平時習以為常的庫函式卻有3種實現方,完全不一樣的實現邏輯,這或許就程式設計的樂趣吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70030112/viewspace-2953161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- strlen函式的模擬實現函式
- 模擬實現字串函式strlen , strcpy ,strcmp字串函式
- strlen函式函式
- C語言-字串函式的實現(一)之strlenC語言字串函式
- sql 函式實現三種父子遞迴SQL函式遞迴
- php 遞迴函式的三種實現方式PHP遞迴函式
- C++中strlen函式C++函式
- Go 函式的三種用法:方法、閉包、實參Go函式
- 每天一個 PHP 語法三字串函式 strcmp、strlen 使用及實現PHP字串函式
- 斐波那契數列三種實現函式函式
- react中三種函式呼叫方法總結React函式
- C 語言中返回字串函式的四種實現方法字串函式
- Sql字串分組Split函式的兩種實現方法SQL字串函式
- [PHP原始碼閱讀]strlen函式PHP原始碼函式
- [譯] 為函式自定義屬性的八種實現方法函式
- C語言實現字串拷貝函式的幾種方法C語言字串函式
- 三種方法實現CSS三欄佈局CSS
- vsftpd的三種實現方法FTP
- 65.C指標---sizeof()函式和strlen()函式常見考指標函式
- PHP 三種方式實現鏈式操作PHP
- Android onClick事件三種實現方法Android事件
- (函式)實現strstr函式函式
- strlen strcat strcpy strcmp 自己實現
- 實現三欄佈局的幾種方法
- Java多執行緒【三種實現方法】Java執行緒
- 元素水平垂直居中三種方法實現
- 快速排序的三種實現方法 (C++)排序C++
- 結構體三種例項化方法(含成員函式)結構體函式
- 三種方法實現算出字串中出現多字元字串字元
- 用函式實現模組化程式設計三函式程式設計
- 三欄式佈局的幾種實現方式
- 記錄三種實現圖片模糊的方法
- Java實現定時任務的三種方法Java
- 幾種常見窗函式及其MATLAB實現函式Matlab
- 分散式鎖初窺-分散式鎖的三種實現方式分散式
- musl中strlen原始碼實現和分析原始碼
- Python佇列的三種佇列實現方法Python佇列
- 三種方法實現:獲取 url 中的引數