栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言strlen、strcpy、strcmp、strcat、strstr等字符串操作函数的实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言strlen、strcpy、strcmp、strcat、strstr等字符串操作函数的实现

今天来实现strlen、strcpy、strcmp、strcat、strstr三个比较常见的字符串操作函数,具体实现如下。


 strlen:

C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。

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

 strcpy:

C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

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

	//判断传入是否为空
	if (src == NULL || dest == NULL) {
		return dest;
	}
	char* pdest = dest;
	//不为空打印
	while (*src != '') {
		*pdest = *src;
		pdest++;
		src++;
	}
	//末尾加''
	*pdest = '';
	return dest;

}

 strcmp:

C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

int my_strcmp(const char* str1, const char* str2) {
	//一直往后查找直到其中一个结尾或者他们二者不相等为止
	while (*str1 != '' && *str2 != '' && (*str1 == *str2)) {
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

 strcat:

C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。

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

	char* pdest = dest;
	//pdset先走到末尾
	while (*pdest != '') {
		pdest++;
	}
	//链接
	while (*src != '') {
		*pdest = *src;
		pdest++;
		src++;
	}
	//加结尾标志''
	*pdest = '';
	return dest;
}

 strstr:

C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘’。

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

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

	while (*dest != '') {
		//记录dest src初始位置
		char* pdest = dest;
		char* psrc = src;
		//若相等则继续比较
		while (*pdest == *psrc || *psrc == '') {
			//如果psrc=='' 则说明找到子串
			if (*psrc == '') {
				return dest;
			}
			//psrc 未到  则继续比较是否相等
			pdest++;
			psrc++;
		}
		dest++;
	}
	return NULL;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号