C語言中strlen函數(shù)使用及說明
一. 簡介
strlen函數(shù)是用來計(jì)算字符串長度的,從字符的首地址開始遍歷,以 '\0' 為結(jié)束標(biāo)志,然后將計(jì)算的長度返回,但是計(jì)算的長度不包含'\0'。
二. strlen函數(shù)的語法
size_t strlen (const char* str);
- 頭文件:#include <string.h>
- size_t:無符號整數(shù)(即:unsigned int)
- const char* str:字符指針 這里只是計(jì)算字符串的長度,用const修飾,避免將原字符串修改掉。
三. strlen函數(shù)的用法
代碼實(shí)例1
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[10] = "abc";
int num = strlen(arr);
printf("數(shù)組arr1的長度為:%d\n", num);
return 0;
}運(yùn)行結(jié)果:
數(shù)組arr的長度為:3
代碼實(shí)例2
#include <stdio.h>
#include <string.h>
int main()
{
char arr2[] = { 'a','b','c' };
int num = strlen(arr);
printf("數(shù)組arr2的長度:%d\n", num);
return 0;
}運(yùn)行結(jié)果:
數(shù)組arr的長度為:隨機(jī)值
為什么都是abcde,但是兩者的結(jié)果不同呢?


arr1中存儲的是一個字符串(字符串是以'\0'為結(jié)束標(biāo)志的,且是連續(xù)的),那么strlen遍歷到字符 'c' 時,再向后遍歷,就會遇到'\0',此時strlen停止遍歷,返回字符個數(shù):3;
字符'a'、'b'、 'c' 三個字符依次存儲在arr的字符數(shù)組中,并沒有存儲'\0',所以'c'字符后面存儲的內(nèi)容我們并不知道有什么。而strlen函數(shù)只有遇到'\0'時才停止,所以返回的個數(shù)是一個隨機(jī)值。
注意事項(xiàng)
使用strlen函數(shù)時,應(yīng)該檢查字符數(shù)組是否以'\0'為結(jié)束標(biāo)志。
四. strlen函數(shù)功能的實(shí)現(xiàn)
1.計(jì)數(shù)器方法
代碼實(shí)例
#include <stdio.h>
#include <string.h>
int my_strlen(const char* p)
{
int count = 0;
while (*p != '\0')
{
p++;
count++;
}
return count;
}
int main()
{
char name[] = "shengyun";
int num = my_strlen(name);
printf("字符串name的長度是:%d\n", num);
return 0;
}代碼結(jié)果:
字符串name的長度是:8
2.遞歸方法
代碼實(shí)例
#include <stdio.h>
#include <string.h>
int my_strlen(const char* p)
{
int count = 0;
if (*p != '\0')
{
return 1 + my_strlen(p+1);
}
else
{
return 0;
}
}
int main()
{
char name[] = "shengyun";
int num = my_strlen(name);
printf("字符串name的長度是:%d\n", num);
return 0;
}代碼結(jié)果
字符串name的長度是:8
3.指針 - 指針方法
代碼實(shí)例
#include <stdio.h>
#include <string.h>
int my_strlen(char* p)
{
char* start = p;
while (*p != '\0')
{
p++;
}
return p - start;
}
int main()
{
char name[] = "shengyun";
int num = my_strlen(name);
printf("字符串name的長度是:%d\n", num);
return 0;
}代碼結(jié)果
字符串name的長度是:8
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Objective-C限制函數(shù)調(diào)用的頻率詳解
這篇文章主要給大家介紹了關(guān)于Objective-C限制函數(shù)調(diào)用的頻率的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
opencv4.5.4+VS2022開發(fā)環(huán)境搭建的實(shí)現(xiàn)
本文主要介紹了opencv4.5.4+VS2022開發(fā)環(huán)境搭建的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
C++?AVL樹的兩單旋和兩雙旋的項(xiàng)目實(shí)踐
本文主要介紹了C++?AVL樹的兩單旋和兩雙旋的項(xiàng)目實(shí)踐,根據(jù)節(jié)點(diǎn)插入位置的不同,AVL樹的旋轉(zhuǎn)分為四種,下面就來介紹一下,感興趣的可以了解一下2024-03-03
C++中的while循環(huán)和for循環(huán)語句學(xué)習(xí)教程
這篇文章主要介紹了C++中的while循環(huán)和for循環(huán)語句學(xué)習(xí)教程,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-09-09
通過c語言調(diào)用系統(tǒng)curl動態(tài)庫的示例詳解
這篇文章中我們將通過一個簡單的示例來講解如何在Ubuntu系統(tǒng)中通過C語言調(diào)用動態(tài)庫(共享庫)的方法,我們將使用libcurl庫,這是一個基于客戶端的URL傳輸庫,廣泛用于各種程序和應(yīng)用中以訪問網(wǎng)頁和服務(wù)器數(shù)據(jù),需要的朋友可以參考下2024-03-03

