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

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

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

1.strlen介紹

strlen --- 求字符串長度

size_t strlen (const char* str);

找到字符串后的‘\0’為止,不包含‘\0’;

2.如何使用strlen庫函數(shù)

int len = strlen(“abcdef”);

 輸出結果:6

char arr[] = { "a" , "b" , "c"?, "d"?, "e" , "f" };
int len = strlen(arr);

輸出結果:隨機值

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.關于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類型 說明字符串的長度是沒有負數(shù)的

 3 - 6 = -3;由于strlen庫函數(shù)的返回類型是unsigned int,則-3被視為無符號數(shù)自然也就比0大;所以容易引發(fā)歧義與誤解.

到此這篇關于C語言實現(xiàn)strlen的三種方法小結的文章就介紹到這了,更多相關C語言實現(xiàn)strlen內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

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

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

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

    C++使用一棵紅黑樹同時封裝出map和set實例代碼

    紅黑樹(Red?Black?Tre)是一種自平衡二叉查找樹,是在計算機科學中用到的一種數(shù)據(jù)結構,典型的用途是實現(xiàn)關聯(lián)數(shù)組,下面這篇文章主要給大家介紹了關于C++使用一棵紅黑樹同時封裝出map和set的相關資料,需要的朋友可以參考下
    2023-04-04
  • 簡單聊聊C++中線程的原理與實現(xiàn)

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

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

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

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

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

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

    C++常用函數(shù)之XML JSON格式轉換問題

    XML在Json出現(xiàn)前應用很廣泛,靈活性好,應用語言也沒有限制,發(fā)展了這么長時間后xml標準已經(jīng)很臃腫。這篇文章主要介紹了C++常用函數(shù)之XML JSON格式轉換問題,需要的朋友可以參考下
    2020-02-02
  • ubuntu中打開終端的三種解決方法

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

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

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

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

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

    我們都知道面向對象語言的三大特點是:**封裝,繼承,多態(tài)。**之前在類和對象部分,我們提到了C++中的封裝,那么今天呢,我們來學習一下C++中的繼承
    2022-07-07
  • 關于STL的erase()陷阱-迭代器失效問題的總結

    關于STL的erase()陷阱-迭代器失效問題的總結

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

最新評論