C語言實現(xiàn)strlen的三種方法小結(jié)
1.strlen介紹
strlen --- 求字符串長度
size_t strlen (const char* str);
找到字符串后的‘\0’為止,不包含‘\0’;
2.如何使用strlen庫函數(shù)
int len = strlen(“abcdef”);
輸出結(jié)果:6
char arr[] = { "a" , "b" , "c"?, "d"?, "e" , "f" };
int len = strlen(arr);輸出結(jié)果:隨機(jī)值
3.三種方法實現(xiàn)strlen 計數(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庫函數(shù)的返回值是size_t,其含義是unsigned int,即為無符號數(shù);
- 我們自己實現(xiàn)庫函數(shù)strlen的my_strlen的返回值則是int,即為有符號數(shù).
返回類型為unsigned int 和 int 各有利弊:1.返回int類型 不容易出現(xiàn)錯誤 2.返回unsigned int類型 說明字符串的長度是沒有負(fù)數(shù)的

3 - 6 = -3;由于strlen庫函數(shù)的返回類型是unsigned int,則-3被視為無符號數(shù)自然也就比0大;所以容易引發(fā)歧義與誤解.
到此這篇關(guān)于C語言實現(xiàn)strlen的三種方法小結(jié)的文章就介紹到這了,更多相關(guān)C語言實現(xiàn)strlen內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題
XML在Json出現(xiàn)前應(yīng)用很廣泛,靈活性好,應(yīng)用語言也沒有限制,發(fā)展了這么長時間后xml標(biāo)準(zhǔn)已經(jīng)很臃腫。這篇文章主要介紹了C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題,需要的朋友可以參考下2020-02-02
關(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)
下面小編就為大家?guī)硪黄P(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12

