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

C語言字符串函數(shù)操作(strlen,strcpy,strcat,strcmp)詳解

 更新時(shí)間:2022年01月23日 17:24:43   作者:Li_yizhuoYa  
大家好,本篇文章主要講的是C語言字符串函數(shù)操作(strlen,strcpy,strcat,strcmp)詳解,感興趣的同學(xué)趕快來看一看吧

一.strlen函數(shù)模擬

字符串以‘\0’作為結(jié)束標(biāo)志,strlen函數(shù)返回的是在字符串中‘\0’前面出現(xiàn)的字符個(gè)數(shù)(不包括‘\0’);

有三種方法可以實(shí)現(xiàn)該操作:

①計(jì)數(shù)器方式

②不能創(chuàng)建臨時(shí)變量計(jì)數(shù)器

③指針-指針

 方法一:計(jì)數(shù)器方式

int my_strlen(const char* str)
{
	int count = 0;//定義count用來記錄字符串?dāng)?shù)組中字符數(shù)
	while (*str)
	{
		count++;
		str++;
	}
	return count;
}

方法二:不能創(chuàng)建臨時(shí)變量計(jì)數(shù)器

int my_strlen1(const char* str)//以遞歸的方式完成字符串長(zhǎng)度函數(shù)的模擬
{
	if (*str == '\0')
		return 0;
	return 1 + my_strlen1(str + 1);
}

方法三:指針-指針

指針相減得到的是兩個(gè)指針之間差距的元素個(gè)數(shù),可以根據(jù)這種方式來實(shí)現(xiàn)strlen函數(shù)的模擬

int my_strlen2(char* s)//以此方式進(jìn)行模擬時(shí)不能使用靜態(tài)const
{
	char* p = s;
	while (*p != '\0')
		p++;
	return p - s;
}

測(cè)試樣例

二. strcpy函數(shù)模擬

將src所指向的字符串包括‘\0’復(fù)制到dest所指向的字符串中

源字符串(src所指向的字符串)必須以‘\0’結(jié)束

目標(biāo)空間需足夠大,以確保能存放源字符串

int main()
{
	char s[10] = { 'a','b','c','d','e','f' };
	char s1[10] = { 'c','c','b' };
	printf("%s", my_strcpy(s, s1));//將s1中的字符復(fù)制到s空間中
	return 0;
}
char* my_strcpy(char* dest, const char* src)
{
	char* ret = dest;
	assert(dest != NULL);//斷言
	assert(src != NULL);//斷言
	while ((*dest++ = *src++));
	return ret;
}

測(cè)試結(jié)果 

最終將s2中以‘\0’為結(jié)束符的字符串復(fù)制到s中 

 三.strcat函數(shù)模擬

將src所指向的字符串包括‘\0’復(fù)制到dest所指向的字符串后面

源字符串必須以‘\0’結(jié)束

目標(biāo)空間*dest需足夠大,以確保能夠存放源字符串(*src)

char* my_strcat(char* dest, const char* src)
{
	char* ret = dest;
	assert(dest != NULL);
	assert(src != NULL);
	while (*dest)//訪問到dest所指向字符串的最后一個(gè)字符位置
	{
		dest++;
	}
	while ((*dest++ = *src++));//將src指向的字符串復(fù)制到dest所指向字符串的后面
	return ret;
}

 測(cè)試樣例

將src指向的字符串復(fù)制到dest指向的字符串后面,最終得到結(jié)果

四.strcmp函數(shù)模擬

 strcmp函數(shù)的作用是比較字符串,用法如下strcmp(字符串1,字符串2),它會(huì)比較這兩個(gè)字符串:

如果字符串1等于字符串2,strcmp函數(shù)返回0;

如果字符串1小于字符串2,strcmp函數(shù)返回一個(gè)負(fù)值;

如果字符串1大于字符串2,strcmp函數(shù)返回一個(gè)正值.

 具體實(shí)現(xiàn)如下:

int my_strcmp(const char* dest, const char* src)
{
	int ret = 0;
	assert(src != NULL);
	assert(dest != NULL);
	while (!(ret = *(unsigned char*)src - *(unsigned char*)dest) && *dest)
	{
		++src;
		++dest;
	}
	if (ret < 0)
		ret = -1;
	else if (ret > 0)
		ret = 1;
	return ret;
}

總結(jié)

到此這篇關(guān)于C語言字符串函數(shù)操作(strlen,strcpy,strcat,strcmp)詳解的文章就介紹到這了,更多相關(guān)C語言字符串函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

    c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

    一種用于管理分組的數(shù)據(jù)結(jié)構(gòu)。它具備兩個(gè)操作:(1)查詢?cè)豠和元素b是否為同一組 (2) 將元素a和b合并為同一組,需要的朋友可以參考下
    2018-08-08
  • C語言實(shí)現(xiàn)貪吃蛇代碼

    C語言實(shí)現(xiàn)貪吃蛇代碼

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)貪吃蛇代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C語言示例講解for循環(huán)的用法

    C語言示例講解for循環(huán)的用法

    初學(xué)C語言,常常遇到for循環(huán)中嵌套個(gè)for循環(huán),初學(xué)者對(duì)于這種形式總是一知半解,這次我就整理了常見的for循環(huán)嵌套for循環(huán)的題目,我們一起爭(zhēng)取一舉拿下這類題。學(xué)廢他們,以后再見到就不怕啦!每天都要學(xué)一點(diǎn)呀。加油,奮斗的我們
    2022-06-06
  • C++?中的類型詳細(xì)

    C++?中的類型詳細(xì)

    這篇文章主要介紹了C++?中的類型,C++的類型很復(fù)雜,往往一個(gè)類型匹配錯(cuò)誤就會(huì)導(dǎo)致程序報(bào)錯(cuò),本篇主要講解一些常用類型的概念以及細(xì)節(jié),需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-12-12
  • C語言每日練習(xí)之動(dòng)態(tài)顯示系統(tǒng)時(shí)間

    C語言每日練習(xí)之動(dòng)態(tài)顯示系統(tǒng)時(shí)間

    這篇文章主要介紹了C語言動(dòng)態(tài)顯示系統(tǒng)時(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • C語言switch 語句的用法詳解

    C語言switch 語句的用法詳解

    本文主要介紹C 語言中的switch 語句,這里提供示例代碼和詳細(xì)介紹,希望能幫助學(xué)習(xí)C語言的小伙伴
    2016-07-07
  • vs2019安裝及簡(jiǎn)單處理技巧(超詳細(xì))

    vs2019安裝及簡(jiǎn)單處理技巧(超詳細(xì))

    這篇文章主要介紹了vs2019安裝及簡(jiǎn)單處理方法,本文是一篇非常詳細(xì)的教程,通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • C++中const的特性的使用

    C++中const的特性的使用

    這篇文章主要介紹了C++中const的特性的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • C/C++利用libxml2高效輸出XML大文件詳解

    C/C++利用libxml2高效輸出XML大文件詳解

    這篇文章主要給大家介紹了關(guān)于C/C++利用libxml2高效輸出XML大文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • c語言實(shí)現(xiàn)http下載器的方法

    c語言實(shí)現(xiàn)http下載器的方法

    這篇文章主要介紹了c語言實(shí)現(xiàn)http下載器的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

涟源市| 松阳县| 垦利县| 龙州县| 武威市| 浑源县| 荔浦县| 德兴市| 惠东县| 乐平市| 涞水县| 民勤县| 茶陵县| 吴江市| 彭阳县| 汕头市| 苍南县| 房山区| 九寨沟县| 永福县| 德惠市| 武山县| 宜兰市| 来宾市| 霍邱县| 丽江市| 高青县| 庆城县| 隆昌县| 慈溪市| 楚雄市| 彭泽县| 祁连县| 杭锦旗| 桓台县| 毕节市| 阿城市| 个旧市| 湾仔区| 陈巴尔虎旗| 富顺县|