C語言實(shí)現(xiàn)strlen的三種方法小結(jié)
1.strlen介紹
strlen --- 求字符串長(zhǎng)度
size_t strlen (const char* str);
找到字符串后的‘\0’為止,不包含‘\0’;
2.如何使用strlen庫(kù)函數(shù)
int len = strlen(“abcdef”);
輸出結(jié)果:6
char arr[] = { "a" , "b" , "c"?, "d"?, "e" , "f" }; int len = strlen(arr);
輸出結(jié)果:隨機(jī)值
3.三種方法實(shí)現(xiàn)strlen 計(jì)數(shù)器法:
#include<stdio.h> #include<assert.h> int my_strlen(const char* str) { int count = 0; assert(str != NULL); while (*str != '\0')//while(*str) { count++; str++; } return count; } int main() { int len = my_strlen("abcdef"); printf("%d\n", len); return 0; }
遞歸法:
#include<stdio.h> int my_strlen(char *str) { if (*str != '\0') { return 1 + my_strlen(str + 1); } return 0; } int main() { char arr[] = { "abcdef" }; int ret = my_strlen(arr); printf("%d\n", ret); return 0; }
指針-指針法:
#include<stdio.h> int my_strlen(char* str) { char* start = str; char* end = str; while (*end!='\0') { end++; } return end - start; } int main() { char arr[] = "bit"; int len = my_strlen(arr); printf("%d\n", len); return 0; }
4.關(guān)于strlen返回值
- strlen庫(kù)函數(shù)的返回值是size_t,其含義是unsigned int,即為無符號(hào)數(shù);
- 我們自己實(shí)現(xiàn)庫(kù)函數(shù)strlen的my_strlen的返回值則是int,即為有符號(hào)數(shù).
返回類型為unsigned int 和 int 各有利弊:1.返回int類型 不容易出現(xiàn)錯(cuò)誤 2.返回unsigned int類型 說明字符串的長(zhǎng)度是沒有負(fù)數(shù)的
3 - 6 = -3;由于strlen庫(kù)函數(shù)的返回類型是unsigned int,則-3被視為無符號(hào)數(shù)自然也就比0大;所以容易引發(fā)歧義與誤解.
到此這篇關(guān)于C語言實(shí)現(xiàn)strlen的三種方法小結(jié)的文章就介紹到這了,更多相關(guān)C語言實(shí)現(xiàn)strlen內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++使用一棵紅黑樹同時(shí)封裝出map和set實(shí)例代碼
紅黑樹(Red?Black?Tre)是一種自平衡二叉查找樹,是在計(jì)算機(jī)科學(xué)中用到的一種數(shù)據(jù)結(jié)構(gòu),典型的用途是實(shí)現(xiàn)關(guān)聯(lián)數(shù)組,下面這篇文章主要給大家介紹了關(guān)于C++使用一棵紅黑樹同時(shí)封裝出map和set的相關(guān)資料,需要的朋友可以參考下2023-04-04簡(jiǎn)單聊聊C++中線程的原理與實(shí)現(xiàn)
C++11?引入了多線程支持,提供了一套基本的線程庫(kù),包括線程、互斥量(mutex)、條件變量(condition_variable)等。這些組件可以幫助你在?C++?程序中實(shí)現(xiàn)并發(fā)和多線程編程,本文就來和大家簡(jiǎn)單聊聊吧2023-03-03C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題
XML在Json出現(xiàn)前應(yīng)用很廣泛,靈活性好,應(yīng)用語言也沒有限制,發(fā)展了這么長(zhǎng)時(shí)間后xml標(biāo)準(zhǔn)已經(jīng)很臃腫。這篇文章主要介紹了C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題,需要的朋友可以參考下2020-02-02C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼
MD5算法是一種廣泛使用的 Hash 算法,常用于確保信息傳輸?shù)耐暾耘c一致性,本文主要介紹了C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10關(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)
下面小編就為大家?guī)硪黄P(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12