日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

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

作者:三天曬網(wǎng)且從不打魚 ? 更新時間: 2022-11-01 編程語言

前言:

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

strlen

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

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

strcpy

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

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 庫函數(shù) int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串進行比較。

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

strcat

C 庫函數(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é)尾標志'\0'
	*pdest = '\0';
	return dest;
}

strstr

C 庫函數(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' 則說明找到子串
			if (*psrc == '\0') {
				return dest;
			}
			//psrc 未到 \0 則繼續(xù)比較是否相等
			pdest++;
			psrc++;
		}
		dest++;
	}
	return NULL;
}

原文鏈接:https://blog.csdn.net/qq_53130059/article/details/125567532

欄目分類
最近更新