C語言中strlen函數(shù)使用及說明
一. 簡介
strlen函數(shù)是用來計算字符串長度的,從字符的首地址開始遍歷,以 '\0' 為結(jié)束標(biāo)志,然后將計算的長度返回,但是計算的長度不包含'\0'。
二. strlen函數(shù)的語法
size_t strlen (const char* str);
- 頭文件:#include <string.h>
- size_t:無符號整數(shù)(即:unsigned int)
- const char* str:字符指針 這里只是計算字符串的長度,用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ī)值。
注意事項
使用strlen函數(shù)時,應(yīng)該檢查字符數(shù)組是否以'\0'為結(jié)束標(biāo)志。
四. strlen函數(shù)功能的實(shí)現(xiàn)
1.計數(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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(98.驗證二叉搜索樹)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(98.驗證二叉搜索樹),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C/C++ Socket設(shè)置接收超時時間的多種方法
網(wǎng)絡(luò)編程中經(jīng)常需要處理的一個問題就是如何正確地處理Socket超時,對于C/C++,有幾種常用的技術(shù)可以用來設(shè)置Socket接收超時時間,在這篇文章中,我們將詳細(xì)介紹如何在C/C++中設(shè)置Socket的非阻塞模式以及如何配置接收超時時間,需要的朋友可以參考下2024-01-01
C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式
這篇文章主要介紹了C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
一起來學(xué)習(xí)C語言的程序環(huán)境與預(yù)處理
這篇文章主要為大家詳細(xì)介紹了C語言程序環(huán)境與預(yù)處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03

