欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中strlen函數(shù)使用及說明

 更新時間:2025年09月19日 08:44:58   投稿:jingxian  
strlen函數(shù)用于計算字符串長度,不包含終止符'\0',其語法需包含頭文件string.h,參數(shù)為const char*類型,正確使用需確保字符串以'\0'結(jié)尾,否則返回隨機(jī)值,常見實(shí)現(xiàn)方法包括計數(shù)器、遞歸及指針差值法,注意檢查字符數(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++list的模擬實(shí)現(xiàn)

    C++list的模擬實(shí)現(xiàn)

    list是數(shù)據(jù)結(jié)構(gòu)中的鏈表,在C++的STL中,有l(wèi)ist的模板,STL中的list的結(jié)構(gòu)是帶頭雙向循環(huán)鏈表,當(dāng)然STL中還有一個forward_list的鏈表,這個鏈表是一個帶頭的單鏈表。為了更好的理解list,我們來對其進(jìn)行模擬實(shí)現(xiàn)。,需要的朋友可以參考
    2023-04-04
  • C++實(shí)現(xiàn)LeetCode(98.驗證二叉搜索樹)

    C++實(shí)現(xiàn)LeetCode(98.驗證二叉搜索樹)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(98.驗證二叉搜索樹),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • opencv實(shí)現(xiàn)三幀差法解析

    opencv實(shí)現(xiàn)三幀差法解析

    這篇文章主要介紹了opencv實(shí)現(xiàn)三幀差法的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 一文教你Qt如何操作SQLite數(shù)據(jù)庫

    一文教你Qt如何操作SQLite數(shù)據(jù)庫

    Sqlite 數(shù)據(jù)庫作為 Qt 項目開發(fā)中經(jīng)常使用的一個輕量級的數(shù)據(jù)庫,可以說是兼容性相對比較好的數(shù)據(jù)庫之一。本文為大家介紹了Qt操作SQLite數(shù)據(jù)庫的具體方法,希望對大家有所幫助
    2023-03-03
  • C/C++ Socket設(shè)置接收超時時間的多種方法

    C/C++ Socket設(shè)置接收超時時間的多種方法

    網(wǎng)絡(luò)編程中經(jīng)常需要處理的一個問題就是如何正確地處理Socket超時,對于C/C++,有幾種常用的技術(shù)可以用來設(shè)置Socket接收超時時間,在這篇文章中,我們將詳細(xì)介紹如何在C/C++中設(shè)置Socket的非阻塞模式以及如何配置接收超時時間,需要的朋友可以參考下
    2024-01-01
  • c++ *運(yùn)算符重載

    c++ *運(yùn)算符重載

    運(yùn)算符重載重載運(yùn)算符是C++ 的一個重要特性,使用運(yùn)算符重載, 的一個重要特性,使用運(yùn)算符重載, 重載運(yùn)算符是程序員可以把C++ 運(yùn)算符的定義擴(kuò)展到運(yùn)算分量是對象
    2014-09-09
  • Opencv提取連通區(qū)域輪廓的方法

    Opencv提取連通區(qū)域輪廓的方法

    這篇文章主要為大家詳細(xì)介紹了Opencv提取連通區(qū)域輪廓的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言中的getchar和putchar的使用方法

    C語言中的getchar和putchar的使用方法

    這篇文章主要介紹了C語言中的getchar和putchar的使用方法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式

    C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式

    這篇文章主要介紹了C語言中全局變量,局部變量,靜態(tài)局部變量的區(qū)分方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 一起來學(xué)習(xí)C語言的程序環(huán)境與預(yù)處理

    一起來學(xué)習(xí)C語言的程序環(huán)境與預(yù)處理

    這篇文章主要為大家詳細(xì)介紹了C語言程序環(huán)境與預(yù)處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論