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

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

字符串相關(guān)函數(shù)的模擬實(shí)現(xiàn)-創(chuàng)新互聯(lián)

要模擬庫(kù)函數(shù)的實(shí)現(xiàn),必須要搞清楚的是在程序調(diào)用中它的實(shí)現(xiàn)原理是什么,接下來就講解幾個(gè)字符串相關(guān)的函數(shù),比如strcmp(),strncmp(),strcat(),strncat()......

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、紅花崗ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的紅花崗網(wǎng)站制作公司


字符串函數(shù)主要包括受限制字符串函數(shù)與不受限制字符串函數(shù),那么什么是受限制字符串函數(shù)與不受限制字符串函數(shù)呢?!簡(jiǎn)單來講,不受限制字符串函數(shù)就是使用這些函數(shù)時(shí),它們只是通過字符串結(jié)尾的NULL 字符來確定字符串的長(zhǎng)度,例如我們常用的strcmp(),strcpy();而受限制的字符串函數(shù)就是這些函數(shù)她們接受一個(gè)顯示的長(zhǎng)度參數(shù),來限定要復(fù)制或者比較的字符個(gè)數(shù),例如strncmp(),strncpy(),這里邊的n在函數(shù)名和函數(shù)傳參中都有,n即為要操作的字符個(gè)數(shù)。


一、不受限制字符串函數(shù)

1.strcpy()

庫(kù)函數(shù)原型:char*strcpy(char*strDestination,constchar*strSource);

實(shí)現(xiàn):將拷貝的字符串str2一個(gè)一個(gè)拷貝到字符數(shù)組str1中,直到字符數(shù)組遇到‘\0’結(jié)束標(biāo)志后拷貝完成。在拷貝時(shí),str2中的'\0'一同被拷貝。

char *my_strcpy(char *str1,const char *str2)
{
	char *start = str1;        //保存字符數(shù)組2的首地址
	assert(str1);
	assert(str2);
	while(*str1++ =  *str2++)
	{
		;
	}
	return start;
}


2.strlen()

庫(kù)函數(shù)原型:size_tstrlen(constchar*string);

實(shí)現(xiàn):在遇到'\0'之前,指針每向后挪動(dòng)一次,計(jì)數(shù)器加一次

int my_strlen(const char *str1)
{
	int count = 0;
	assert(str1);
	while(*str1++)
	{
		count++;
		//str1++;
	}
	return count;
}

3.strcmp()

庫(kù)函數(shù)原型:intstrcmp(constchar*string1,constchar*string2);

比較規(guī)則:兩個(gè)字符串自左向右逐個(gè)字符比較(按ASCII碼的值比較),知道出現(xiàn)不同的字符或者遇到‘\0’。

(1)如果字符全部相等,則兩個(gè)字符串相等;

(2)如果出現(xiàn)不同的字符,則以第一對(duì)不相同字符的比較結(jié)果為準(zhǔn)。

比較的結(jié)果由函數(shù)值帶回:

(1)字符串1 = 字符串2,返回0;

(2)字符串1 > 字符串2 ,返回一個(gè)正整數(shù);

(3)字符串1 < 字符串2,返回一個(gè)負(fù)整數(shù)。

int my_strcmp(const char *str1,const char *str2)
{
	assert(str1);
	assert(str2);
	while(*str1 == *str2)
	{
		if(*str1 != '\0')
			return 0;
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

4.strcat()

庫(kù)函數(shù)原型:char*strcat(char*strDestination,constchar*strSource);

實(shí)現(xiàn):指針指到字符數(shù)組1 的結(jié)尾時(shí),將字符串2 中的字符一個(gè)一個(gè)追加到字符數(shù)組1 的后面,指針向后挪一次,字符拷貝一個(gè),直到字符數(shù)組1 遇到‘\0’時(shí)追加完畢。(字符數(shù)組1 要足夠大,能把字符串2 都添加進(jìn)去)

char *my_strcat(char *str1,const char *str2)
{
	char *start = str1;    //保存字符數(shù)組的首地址
	assert(str1);
	assert(str2);
	while(*str1)
	{
		str1++;
	}
	while(*str2)
	{
		*str1 = *str2;
		str1++;
		str2++;
	}
	*str1 = '\0';
	return start;
}

5.strstr()

庫(kù)函數(shù)原型:char*strstr(constchar*string,constchar*strCharSet);

實(shí)現(xiàn):在字符串str1 中找子字符串str2,如果能找到,就返回子串的起始位置,如果找不到,就返回NULL

char *my_strstr(const char *str, const char *substr)
{
	const char *str1 = str;
	const char *str2 = substr;
	const char *start = NULL;         
	assert(str);
	assert(substr);
	if(*str2 == '\0')
		return (char *)str1;
	while(*str1)
	{
		start = str1;           //找到的第一個(gè)字符保存
		while(*str1 && *str2 && *str1 == *str2)
		{
			str1++;
			str2++;
		}
		if(*str2 == '\0')
			return (char *)start;
		str1 = start + 1;
		str2 = substr;
	}
	return NULL;
}

二、受限制字符串函數(shù)

1.strncat()

原型:char*strncat(char*strDest,constchar*strSource,size_tcount);

count為要追加的字符個(gè)數(shù)

char *my_strncat(char *str1,char *str2,size_t n)
{
	char *start = str1;      //保存字符數(shù)組1 的起始地址
	assert(str1);
	assert(str2);
	while(*str1)
	{
		str1++;
	}
	while(n)
	{
		*str1 = *str2;
		str1++;
		str2++;
		n--;
	}
	*str1 = '\0';
	return start;
}

2.strncmp()

函數(shù)原型:char*strncpy(char*strDest,constchar*strSource,size_tcount);

int my_strncmp(const char *str1,const char *str2,size_t n)
{
	assert(str1);
	assert(str2);
	while(n && *str1 && *str1 == *str2)
	{
		if(*str1 != '\0')
			return 0;
		str1++;
		str2++;
		n--;
	}
	return *str1 - *str2;
}

3.strncpy()

庫(kù)函數(shù)原型:char*strncpy(char*strDest,constchar*strSource,size_tcount);

char *my_strncpy(char *str1,char *str2,size_t n)
{
	char *start = str1;
	assert(str1);
	assert(str2);
	while((n--) && (*str1++ = *str2++))
	{
		//*str1++ = *str2++;
		//n--;
	}
	*str1 = '\0';
	return start;
}


創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。


新聞標(biāo)題:字符串相關(guān)函數(shù)的模擬實(shí)現(xiàn)-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://weahome.cn/article/didjei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部