溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言字符串函數(shù)怎么用

發(fā)布時間:2021-12-28 10:37:03 來源:億速云 閱讀:155 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹C語言字符串函數(shù)怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一.strlen函數(shù)模擬

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

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

①計數(shù)器方式

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

③指針-指針

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

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

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

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

方法三:指針-指針

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

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

測試樣例

C語言字符串函數(shù)怎么用

C語言字符串函數(shù)怎么用

二. strcpy函數(shù)模擬

將src所指向的字符串包括‘\0'復制到dest所指向的字符串中

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

目標空間需足夠大,以確保能存放源字符串

int main()
{
	char s[10] = { 'a','b','c','d','e','f' };
	char s1[10] = { 'c','c','b' };
	printf("%s", my_strcpy(s, s1));//將s1中的字符復制到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語言字符串函數(shù)怎么用

C語言字符串函數(shù)怎么用

最終將s2中以‘\0'為結束符的字符串復制到s中 

 三.strcat函數(shù)模擬

將src所指向的字符串包括‘\0'復制到dest所指向的字符串后面

源字符串必須以‘\0'結束

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

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

 測試樣例

C語言字符串函數(shù)怎么用

C語言字符串函數(shù)怎么用

將src指向的字符串復制到dest指向的字符串后面,最終得到結果

C語言字符串函數(shù)怎么用

四.strcmp函數(shù)模擬

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

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

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

如果字符串1大于字符串2,strcmp函數(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;
}

以上是“C語言字符串函數(shù)怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI