最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言如何計算字符串長度

 更新時間:2023年02月06日 09:29:38   作者:慕白昂  
這篇文章主要介紹了C語言如何計算字符串長度問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

C語言計算字符串長度

思路分析

字符串的結(jié)束標志是’\0’,因此計算字符串的長度的核心思想就是通過字符指針順序檢索每一個字符,直到檢測到’\0’為止,以下是實現(xiàn)該算法的幾種方式。

代碼實現(xiàn)

1.用while循環(huán)實現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>

int myStrlen(char* str)
{
?? ?int count = 0;
?? ?while(*str != '\0')
?? ?{
?? ??? ?count++;//記錄字符串長度
?? ??? ?str++;
?? ?}
?? ?return count;
}
int main()
{
?? ?char arr[] = "bit";
?? ?int len= myStrlen(arr);
?? ?printf("%d\n", len);
?? ?system("pause");
?? ?return 0;
}

2.用遞歸實現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>

int myStrlen( char *str) ?
{
?? ?if ((str == NULL) || (*str == '\0'))?
?? ?{
?? ??? ?return 0;
?? ?}
?? ?else {
?? ??? ?return myStrlen(str + 1) + 1;
?? ?}
}
int main()
{
?? ?char arr[] = "bit";
?? ?int len= myStrlen(arr);
?? ?printf("%d\n", len);
?? ?system("pause");
?? ?return 0;
}

3.另一種遞歸實現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
#include <assert.h>
int myStrlen(const char *str) ?
{
?? ?assert(str != NULL);
?? ?return *str ? (myStrlen(++str) + 1) : 0;
}
int main()
{
?? ?char arr[] = "bit";
?? ?int len= myStrlen(arr);
?? ?printf("%d\n", len);
?? ?system("pause");
?? ?return 0;
}

計算字符串長度的函數(shù)解讀

  • strlen函數(shù)求得的字符串長度是從字符串第一個元素到第一個'\0'之間元素的個數(shù)(如果字符串中間有'\0',則結(jié)果不是整個字符串的長度),同時不包括該'\0'
  • sizeof求得的結(jié)果是存儲該字符串的變量占用的空間大小,因而一定會包括'\0'.若'\0'后還有空余的空間,也會包含到結(jié)果里面

解釋(與2種求值方式的實現(xiàn)原理有關(guān)):

1.strlen()的一種實現(xiàn)就是遍歷字符串,遇到'\0'就終止,因而返回的結(jié)果是第一個'\0'前字符元素的個數(shù)

2.sizeof 常用來求變量占用內(nèi)存空間的大小,因而它返回的是存儲字符串的變量所占用的內(nèi)存空間大小,用來求字符串的長度,只在特定情況下可行,即字符數(shù)組剛好被一個字符串占滿。

在C語言中,與strlen函數(shù)不同的是,sizeof不是一個函數(shù),而是判斷數(shù)據(jù)類型或者表達式長度符的關(guān)鍵字,也可以說是C/C++中的一個操作符(operator),其作用就是返回一個對象或者類型所占的內(nèi)存字節(jié)數(shù)。

注意:字節(jié)數(shù)的計算在程序編譯時進行,而不是在程序執(zhí)行的過程中才計算出來!

數(shù)組的sizeof值等于數(shù)組所占用的內(nèi)存字節(jié)數(shù),如:

char a1[] = "abc";
int a2[3];
sizeof( a1 ); // 結(jié)果為4,字符末尾還存在一個NULL終止符
sizeof( a2 ); // 結(jié)果為3*4=12(依賴于int)

那么如何求數(shù)組中元素的個數(shù)呢? (以下兩種方式是等價的)

int c1= sizeof (a1)/ sizeof ( char ); //總長度/單個元素的長度 ?char型
int c2= sizeof (a2)/ sizeof (a2[0]); //總長度/第一個元素的長度 int型

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言用easyx實現(xiàn)消磚塊游戲

    C語言用easyx實現(xiàn)消磚塊游戲

    這篇文章主要為大家詳細介紹了C語言消磚塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++實現(xiàn)簡單圖書館管理系統(tǒng)

    C++實現(xiàn)簡單圖書館管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Qt實現(xiàn)鬧鐘小程序

    Qt實現(xiàn)鬧鐘小程序

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)鬧鐘小程序,利用Qt的designer設(shè)計需要的鬧鐘界面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • IOS 開發(fā)UITextView回收或關(guān)閉鍵盤

    IOS 開發(fā)UITextView回收或關(guān)閉鍵盤

    這篇文章主要介紹了IOS 開發(fā)UITextView回收或關(guān)閉鍵盤的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 離線安裝visual?studio2022+QT5.12的實現(xiàn)步驟

    離線安裝visual?studio2022+QT5.12的實現(xiàn)步驟

    近期有需求離線配置C++與QT環(huán)境,本文主要介紹了離線安裝visualstudio2022+QT5.12的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • C++ Boost Heap使用實例詳解

    C++ Boost Heap使用實例詳解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C語言用指針函數(shù)尋找數(shù)組中的最大值與次大值

    C語言用指針函數(shù)尋找數(shù)組中的最大值與次大值

    這篇文章主要給大家介紹了關(guān)于C語言用指針函數(shù)尋找數(shù)組中的最大值與次大值的相關(guān)資料,該代碼通過定義一個名為LargestTow的函數(shù)來找出數(shù)組中的最大值和次大值,并將結(jié)果分別存入指針所指向的內(nèi)存單元中,需要的朋友可以參考下
    2024-11-11
  • C++左值與右值,右值引用,移動語義與完美轉(zhuǎn)發(fā)詳解

    C++左值與右值,右值引用,移動語義與完美轉(zhuǎn)發(fā)詳解

    這篇文章主要為大家詳細介紹了Python實現(xiàn)學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Android App仿微信界面切換時Tab圖標變色效果的制作方法

    Android App仿微信界面切換時Tab圖標變色效果的制作方法

    這篇文章主要介紹了Android App仿微信界面切換時Tab圖標變色效果的制作方法,重點講解了圖標的繪制技巧,需要的朋友可以參考下
    2016-04-04
  • C++之vector容器的的聲明初始化和增刪改查

    C++之vector容器的的聲明初始化和增刪改查

    這篇文章主要給大家介紹了關(guān)于C++vector容器的的聲明初始化和增刪改查的相關(guān)資料,向量(Vector)是一個封裝了動態(tài)大小數(shù)組的順序容器(Sequence Container),跟任意其它類型容器一樣,它能夠存放各種類型的對象,需要的朋友可以參考下
    2021-07-07

最新評論

石台县| 丰城市| 巴林右旗| 运城市| 丰台区| 沾化县| 巴马| 长宁区| 仁怀市| 汝城县| 革吉县| 景东| 石楼县| 依兰县| 东海县| 太原市| 印江| 临海市| 绥棱县| 富裕县| 荃湾区| 周至县| 鸡东县| 宜兴市| 佳木斯市| 本溪市| 襄汾县| 谢通门县| 玉溪市| 漯河市| 营口市| 娄底市| 乐清市| 泾阳县| 昭平县| 闻喜县| 汝州市| 家居| 海盐县| 嘉禾县| 晴隆县|