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

C語言實(shí)現(xiàn)strlen的三種方法小結(jié)

 更新時(shí)間:2023年06月19日 10:21:09   作者:Hello_World_213  
本文主要介紹了C語言實(shí)現(xiàn)strlen的三種方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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ù)組

    一篇文章帶你入門C語言:數(shù)組

    這篇文章主要介紹了C語言中數(shù)組的一些基本知識(shí)小結(jié),其中重點(diǎn)是對(duì)于數(shù)組的內(nèi)存分配相關(guān)方面的知識(shí)整理,需要的朋友可以參考下
    2021-08-08
  • C++使用一棵紅黑樹同時(shí)封裝出map和set實(shí)例代碼

    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)

    簡(jiǎn)單聊聊C++中線程的原理與實(shí)現(xiàn)

    C++11?引入了多線程支持,提供了一套基本的線程庫(kù),包括線程、互斥量(mutex)、條件變量(condition_variable)等。這些組件可以幫助你在?C++?程序中實(shí)現(xiàn)并發(fā)和多線程編程,本文就來和大家簡(jiǎn)單聊聊吧
    2023-03-03
  • C++內(nèi)存對(duì)象布局小測(cè)試

    C++內(nèi)存對(duì)象布局小測(cè)試

    這篇文章主要介紹了C++內(nèi)存對(duì)象布局小測(cè)試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • c++幾種基本的插入排序(圖文)

    c++幾種基本的插入排序(圖文)

    這篇文章主要介紹了c++幾種基本的插入排序(圖文),需要的朋友可以參考下
    2014-11-11
  • C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題

    C++常用函數(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-02
  • ubuntu中打開終端的三種解決方法

    ubuntu中打開終端的三種解決方法

    本篇文章是對(duì)ubuntu中打開終端的三種方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼

    C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼

    MD5算法是一種廣泛使用的 Hash 算法,常用于確保信息傳輸?shù)耐暾耘c一致性,本文主要介紹了C/C++實(shí)現(xiàn)的MD5哈希校驗(yàn)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 一文搞懂C++中繼承的概念與使用

    一文搞懂C++中繼承的概念與使用

    我們都知道面向?qū)ο笳Z言的三大特點(diǎn)是:**封裝,繼承,多態(tài)。**之前在類和對(duì)象部分,我們提到了C++中的封裝,那么今天呢,我們來學(xué)習(xí)一下C++中的繼承
    2022-07-07
  • 關(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)

    關(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)

    下面小編就為大家?guī)硪黄P(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12

最新評(píng)論