C語(yǔ)言中求字符串長(zhǎng)度的函數(shù)的幾種實(shí)現(xiàn)方法
1.最常用的方法是創(chuàng)建一個(gè)計(jì)數(shù)器,判斷是否遇到‘\0',不是'\0'指針就往后加一。
int my_strlen(const char *str) { assert(str != NULL); int count = 0; while (*str != '\0') { count++; str++; } return count; }
2.不創(chuàng)建計(jì)數(shù)器,從前向后遍歷一遍,沒(méi)有遇到‘\0'就讓指針向后加一,找到最后一個(gè)字符,記下來(lái)地址,然后用最后一個(gè)字符的地址減去起始地址,就得到了字符串的長(zhǎng)度。
int my_strlen(const char *str) { char *end = str; assert(str!=NULL); assert(end!=NULL); while (*end != '\0') { end++; } return end - str; }
3.不創(chuàng)建計(jì)數(shù)器,遞歸實(shí)現(xiàn)。
int my_strlen(const char *str) { assert(str != NULL); if (*str == '\0') { return 0; } else { return (1 + my_strlen(++str)); } }
也可以寫成這樣:
int my_strlen(const char *str) { assert(str != NULL); return (*str == '\0') ? 0 : (my_strlen(++str) + 1); }
或者這樣:
int my_strlen(const char *str) { assert(str != NULL); return (*str == '\0') ? 0 : (my_strlen(str+1) + 1); }
這篇關(guān)于c語(yǔ)言中獲取字符串長(zhǎng)度的函數(shù)就介紹到這了,需要的朋友可以參考一下。
相關(guān)文章
淺談C++函數(shù)聲明后面加throw()的作用(必看)
下面小編就為大家?guī)?lái)一篇淺談C++函數(shù)聲明后面加throw()的作用(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié)
這篇文章主要介紹了C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié),包括getpw()函數(shù)和getpwnam()函數(shù)以及getpwuid()函數(shù),需要的朋友可以參考下2015-08-08完美解決QT?QGraphicsView提升到QChartView報(bào)錯(cuò)的問(wèn)題
使用QT提供的QChartView來(lái)繪制圖表,提升QGraphicsView控件繼承QChartView后,然后將QGraphicsView提升到我們自己寫的類,怎么才能確保提升后編譯不報(bào)錯(cuò)呢,下面小編給大家?guī)?lái)了QT QGraphicsView 提升到QChartView報(bào)錯(cuò)解決方案,感興趣的朋友一起看看吧2023-05-05QT線程池的使用(QThreadPool類和QRunnable類)
本文主要介紹了QT線程池的使用(QThreadPool類和QRunnable類),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-08-08