真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

字符串操作函數(shù)模擬之番外篇-創(chuàng)新互聯(lián)

一、strchr()

成都創(chuàng)新互聯(lián)公司主要為客戶提供服務(wù)項目涵蓋了網(wǎng)頁視覺設(shè)計、VI標志設(shè)計、成都全網(wǎng)營銷、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式重慶網(wǎng)站建設(shè)公司手機網(wǎng)站制作設(shè)計、微商城、網(wǎng)站托管及網(wǎng)站維護、WEB系統(tǒng)開發(fā)、域名注冊、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計、SEO優(yōu)化排名。設(shè)計、前端、后端三個建站步驟的完善服務(wù)體系。一人跟蹤測試的建站服務(wù)標準。已經(jīng)為成都VR全景行業(yè)客戶提供了網(wǎng)站維護服務(wù)。

 函數(shù)原型:char *strchr( const char *string, int c );

 strchr() 函數(shù)查找字符在指定字符串中首次出現(xiàn)的位置,如果找到,就返回指定字符在已知字符串中最后一次開始出現(xiàn)的位置,找不到就返回NULL。例如:已知字符串“abdedef”,該函數(shù)返回“dedef”

#include
#include
#include

char *my_strchr(const char *str,int c)
{
	assert(str);
	while(*str)
	{
		if(*str == c)
			return (char *)str;         //找到后返回此時的位置
		str++;
	}
	return NULL;                        //沒找到
}

int main()
{
	char *str = "abcdcdef";
	char *ret = my_strchr(str,'d');
	printf("%s\n",ret);
	system("pause");
	return 0;
}

二、strrchr()

 函數(shù)原型:char *strrchr( const char *string, int c );

 strrchr()函數(shù)正好與strchr()函數(shù)相反,此函數(shù)是查找字符在指定字符串中從正面開始數(shù)最后一次出現(xiàn)的位置,若找到,就返回最后一次開始出現(xiàn)的位置,否則返回NULL。還用上邊的字符串為例,該函數(shù)返回的是結(jié)果是“def”

下面看三種實現(xiàn)方法:

1.從正面數(shù),保存每個位置,則最后一次找到的即為最后一次出現(xiàn)的字符

char *my_strrchr(const char *str,int c)     
{
	const char *p = NULL;
	assert(str);
	while(*str)
	{
		
		if(*str == c)
		{
			p = str;            //保存每一次出現(xiàn)該字符的地址
		}
		str++;
	}
	if(*str != '\0')
		return (char *)p;
	return NULL;
}

2.從后面數(shù),遇到的第一個字符即為最后一次出現(xiàn)的字符

char *my_strrchr(const char *str,int ch)
{
	const char *start = str;                //將指定字符串首地址保存
	assert(str);
	while(*str)
	{
		str++;
	}
	//str--;
	//while(*str--)
	//{
	//	;
	//}
	while((str >= start) && (*str != ch))
	{
		str--;
	}
	if(*str == ch)
		return (char *)str;
	return NULL;
}

3.調(diào)用strchr函數(shù)

char *my_strrchr(const char *str,int ch)
{
	const char *cur = NULL;
	const char *last = NULL;
	assert(str);
	while(cur = strchr(str,ch))
	{
		last = cur;       //保存每一次找到的位置
		str = cur+1;
	}
	return (char *)last;
}

三、strrstr()

  我們都知道在庫函數(shù)中有strstr(),它是查找自字符串的,但是類似于上邊,我們要是想實現(xiàn)一個函數(shù)來返回子字符串在指定字符串中最后一次出現(xiàn)的位置該怎么做呢?!

下面看兩種實現(xiàn)方法:

1.從后向前找字符串(由于這種查找凡事不能再遇到'\0',所以不能以'\0'作為循環(huán)條件,而用字符串的長度來控制循環(huán))

char *my_strrstr(const char *str,const char *substr,int len1,int len2)
{
	const char *l_start = str+len1-1;
	const char *end = substr+len2-1;
	assert(str);
	assert(substr);
	while(len1)
	{
		str = l_start;
		while((len2 != 1) && (*substr == *str))
		{
			str--;
			substr--;
			len2--;
		}
		l_start = str;
		if(len2 == 1)
			return (char *)l_start;
		if(*str != *substr)
		{
			l_start = l_start-1;
			substr = end;
		}
		len1--;
	}
	return NULL;
}	

顯然這種方法有點麻煩,而且傳參太多。那么就有第二種實現(xiàn)方法了。

2.同實現(xiàn)strrchr一樣,調(diào)用strstr函數(shù)

char *my_strrstr(const char *str,const char *substr)
{
	const char *last = NULL;
	const char *cur = NULL;
	assert(str);
	if(!*substr)
		return (char *)substr;
	while(cur = strstr(str,substr))
	{
		last = cur;            //每次保存找到的字符串的首位置
		str = last+1;          //使str指向下一位開始尋找
	}
	return (char *)last;
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站標題:字符串操作函數(shù)模擬之番外篇-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://weahome.cn/article/dgedeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部