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

C語(yǔ)言strlen,strcpy,strcmp,strcat,strstr字符串操作函數(shù)實(shí)現(xiàn)

 更新時(shí)間:2022年09月07日 10:34:36   作者:三天曬網(wǎng)且從不打魚  
這篇文章主要介紹了C語(yǔ)言strlen,strcpy,strcmp,strcat,strstr字符串操作函數(shù)實(shí)現(xiàn),,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下

前言:

今天來(lái)實(shí)現(xiàn)strlen、strcpy、strcmp、strcat、strstr三個(gè)比較常見的字符串操作函數(shù),具體實(shí)現(xiàn)如下。

strlen

C 庫(kù)函數(shù) size_t strlen(const char *str) 計(jì)算字符串 str 的長(zhǎng)度,直到空結(jié)束字符,但不包括空結(jié)束字符。

int my_strlen(const char* p) {
	int size = 0;
	//找到末尾停止
	while (*p != '\0') {
		p++;
		size++;
	}
	return size;
}

strcpy

C 庫(kù)函數(shù) char *strcpy(char *dest, const char *src) 把 src 所指向的字符串復(fù)制到 dest。需要注意的是如果目標(biāo)數(shù)組 dest 不夠大,而源字符串的長(zhǎng)度又太長(zhǎng),可能會(huì)造成緩沖溢出的情況。

char* my_strcpy(char* dest, const char* src) {

	//判斷傳入是否為空
	if (src == NULL || dest == NULL) {
		return dest;
	}
	char* pdest = dest;
	//不為空打印
	while (*src != '\0') {
		*pdest = *src;
		pdest++;
		src++;
	}
	//末尾加'\0'
	*pdest = '\0';
	return dest;

}

strcmp

C 庫(kù)函數(shù) int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串進(jìn)行比較。

int my_strcmp(const char* str1, const char* str2) {
	//一直往后查找直到其中一個(gè)結(jié)尾或者他們二者不相等為止
	while (*str1 != '\0' && *str2 != '\0' && (*str1 == *str2)) {
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

strcat

C 庫(kù)函數(shù) char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的結(jié)尾。

char* my_strcat(char* dest, const char* src) {

	char* pdest = dest;
	//pdset先走到末尾
	while (*pdest != '\0') {
		pdest++;
	}
	//鏈接
	while (*src != '\0') {
		*pdest = *src;
		pdest++;
		src++;
	}
	//加結(jié)尾標(biāo)志'\0'
	*pdest = '\0';
	return dest;
}

strstr

C 庫(kù)函數(shù) char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出現(xiàn)字符串 needle 的位置,不包含終止符 ‘\0’。

char* my_strstr(const char* dest, const char* src) {

	//斷言非空
	assert(dest && src);

	while (*dest != '\0') {
		//記錄dest src初始位置
		char* pdest = dest;
		char* psrc = src;
		//若相等則繼續(xù)比較
		while (*pdest == *psrc || *psrc == '\0') {
			//如果psrc=='\0' 則說(shuō)明找到子串
			if (*psrc == '\0') {
				return dest;
			}
			//psrc 未到 \0 則繼續(xù)比較是否相等
			pdest++;
			psrc++;
		}
		dest++;
	}
	return NULL;
}

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

相關(guān)文章

  • vs2019永久配置opencv開發(fā)環(huán)境的方法步驟

    vs2019永久配置opencv開發(fā)環(huán)境的方法步驟

    這篇文章主要介紹了vs2019永久配置opencv開發(fā)環(huán)境的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C/C++中CJSON的使用(創(chuàng)建與解析JSON數(shù)據(jù))

    C/C++中CJSON的使用(創(chuàng)建與解析JSON數(shù)據(jù))

    cJSON是一個(gè)超輕巧的JSON解析器,本文主要介紹了C/C++中CJSON的使用(創(chuàng)建與解析JSON數(shù)據(jù)),具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • C++ Futures與Promises線程使用示例講解

    C++ Futures與Promises線程使用示例講解

    future和promise的作用是在不同線程之間傳遞數(shù)據(jù)。使用指針也可以完成數(shù)據(jù)的傳遞,但是指針非常危險(xiǎn),因?yàn)榛コ饬坎荒茏柚怪羔樀脑L問;而且指針的方式傳遞的數(shù)據(jù)是固定的,如果更改數(shù)據(jù)類型,那么還需要更改有關(guān)的接口,比較麻煩
    2022-11-11
  • C++插件化 NDD源碼的插件機(jī)制實(shí)現(xiàn)解析

    C++插件化 NDD源碼的插件機(jī)制實(shí)現(xiàn)解析

    這篇文章主要介紹了C++插件化 NDD源碼的插件機(jī)制實(shí)現(xiàn)解析,這里再介紹推薦下優(yōu)秀的國(guó)產(chǎn)軟件開源項(xiàng)目?NDD(notepad--),一個(gè)支持windows/linux/mac的文本編輯器,目標(biāo)是要國(guó)產(chǎn)替換同類軟件,需要的朋友可以參考下
    2023-03-03
  • C++ const修飾變量和修飾函數(shù)介紹

    C++ const修飾變量和修飾函數(shù)介紹

    這篇文章主要介紹了C++ const修飾變量和修飾函數(shù)介紹,本文直接用實(shí)例來(lái)講解各自的作用,并總結(jié)了各自的使用技巧,需要的朋友可以參考下
    2015-03-03
  • 嵌入式QT移植的實(shí)現(xiàn)

    嵌入式QT移植的實(shí)現(xiàn)

    本文主要介紹了嵌入式QT移植的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++?std::copy與memcpy區(qū)別小結(jié)

    C++?std::copy與memcpy區(qū)別小結(jié)

    本文主要介紹了C++?std::copy與memcpy區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • C語(yǔ)言typedef與復(fù)雜函數(shù)聲明問題的深入解析

    C語(yǔ)言typedef與復(fù)雜函數(shù)聲明問題的深入解析

    以下是對(duì)C語(yǔ)言中的typedef與復(fù)雜函數(shù)聲明問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-07-07
  • VisualStudio2022制作多項(xiàng)目模板及Vsix插件的實(shí)現(xiàn)

    VisualStudio2022制作多項(xiàng)目模板及Vsix插件的實(shí)現(xiàn)

    本文主要介紹了VisualStudio2022制作多項(xiàng)目模板及Vsix插件的實(shí)現(xiàn),文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • C++基于easyx圖形庫(kù)實(shí)現(xiàn)推箱子游戲

    C++基于easyx圖形庫(kù)實(shí)現(xiàn)推箱子游戲

    這篇文章主要為大家詳細(xì)介紹了C++基于easyx圖形庫(kù)實(shí)現(xiàn)推箱子游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評(píng)論