strlen函式的實現

2021-07-13 11:33:17 字數 1448 閱讀 4442

strlen函式作為乙個在面試經常被問到的問題,相信在不少求職的面經經歷中都有強調

首先看一下strlen函式的作用和基本的作用:計算字串的長度而不包括結束志'\0';由此我們又可以聯想到與他相類似的相對應的另乙個關鍵字sizeof(計算字串的長度,且包括結束標誌『\0』),在此我只是提一下sizeof,下面繼續來**有關strlen函式的使用。

最基本的一點是在使用strlen函式時,首先就要注意別忘了加標頭檔案#include

下面我們下來看第一組**實現:

#include

#include

int main()

printf("%d\n",strlen(ch));}

很顯然通過strlen函式求字串的長度還是蠻成功的,那麼如果題目要求我們不能使用strlen函式還要實現strlen函式的功能時,我們又該如何來寫,其實並不難我們只需要將上面的輸出做一簡單的調整就可以實現,我們將剛才的輸出遮蔽掉,兩者做一對比,下面**實現:

#include

#include

#include

int main()

//printf("%d\n",strlen(ch));

printf("字串長度為%d\n",i);}

當你看到黑框中的執行結果時,你可能已經感嘆出了一句「呵呵」,這有啥難的,可是如果此時面試官告訴你,你寫的不錯不過我只能給你一半的分,你看看程式還能不能在優化,否則我也只能「呵呵」的跟你說「回去吧,你學的還不夠」。下面我們在在剛才的思路上進行調整:

int my_strlen(char *str)

return count;}

這段**是屬於自己編的乙個類似於strlen函式使用方法的**,但是當你寫到這塊時,面試官又會再來一句還可以那就給你70%的成績,你看看還有什麼可以優化的地方,或許你此時已經心裡打呼面試官好坑呀,非要把你問死(哈哈),沒辦法這就是面試官,下面請看**的最終調整過程:

#include

#include

#include

int my_strlen(const char *str)

return count;}

int main()

當你寫出這段**時,此時面試官或許才會露出微笑,表示小夥子寫的不錯,來看一下最後這段**中新的改進內容,首先加了乙個const保證不需要修改時它是安全的。然後加了乙個斷言assert(assert()巨集是用於保證滿足某個特定條件,

如果表示式的值為假,整個程式將退出,並輸出一條錯誤資訊。如果表示式的值為真則繼續執行後面的語句。 )。

最後讓我們在進到庫函式中看看一看公司大牛編寫的有關strlen函式的實現:

int my_strlen(const char *str)

else}

對比我們上面的函式實現,下面函式的有點在於少建立了變數,用遞迴呼叫的方法來實現有關的功能,好了看了這麼其實我們和那些大牛的差別還很大,fighting吧,go!go!go!

strlen函式的實現

求字串長度,strlen函式 strlen要找到 0停下來,返回的長度不包括 0 include stdio.h include stdlib.h include assert.h 1 建立臨時變數 用計數器 int my strlen char str 用指標接受,找 0 return count...

strlen函式實現

函式功能 統計字串中的字元個數。很簡單,直接設乙個變數,並遍歷即可。int strlen const char str 但如果不讓使用中間變數呢?函式執行過程中不占用記憶體基本不可能,除非都使用了暫存器。不使用中間變數 只是說程式設計師不能顯示的申請記憶體而已,即不能有區域性變數或者動態記憶體申請。...

strlen函式的多種實現方式

strlen函式檢測字串實際長度,不包含 0 如 char s 1234567 int a strlen s a 7 可認為strlen char 檢測的是 0 strlen char 碰到 0 就返回 0 以前的字元數。include include include includeint my s...