六种库函数的实现

#include<stdio.h>
#include<assert.h>
char* strstr(const char* str1, const char* str2)
{
	char* cp = (char*)str1;
	char* s1, * s2;
	if (!*str2)
		return((char*)str1);
	while (*cp)
	{
		s1 = cp;
		s2 = (char*)str2;
		while (*s1 && *s2 && !(*s1 - *s2))
			s1++, s2++;
		if (!*s2)
			return (cp);
		cp++;
	}
	return (NULL);
}
int main()
{
	const char* s1 = "abcde";
	const char* s2 = "de";
	char*s3=strstr(s1, s2);
	printf("%s", s3);
	return 0;
}
//#include<stdio.h>
//#include<assert.h>
//size_t my_strlen(const char* s)
//{
//	assert(s != NULL);
//	const char* end = s;
//	while (*end)
//	{
//		end++;
//	}
//	return end - s;
//}
//int main()
//{
//	const char* str = "abcd1234";
//	size_t size = my_strlen(str);
//	printf("%d\n", size);
//	return 0;
//}
//#include<stdio.h>
//#include<assert.h>
//char* my_strcpy(char* dest,const char* src)
//{
//	char* ret = dest;
//	assert(dest != NULL);
//	assert(src != NULL);
//	while ((*dest++ = *src++))
//	{
//		;
//	}
//	return ret;
//}
//int main()
//{
//	char s[20]="";
//   const char* s2 = "abcde";
//	my_strcpy(s, s2);
//	printf("%s\n", s);
//	return 0;
//}
//#include<stdio.h>
//#include<assert.h>
//char* my_strcat(char* dst, const char* src)
//{
//	assert(dst != NULL);
//	assert(dst != NULL);
//	char* ret = dst;
//	while (*dst) {
//		dst++;
//	}
//	while (*dst=*src)
//	{
//		dst++;
//		src++;
//	}
//	return ret;
//}
//int main()
//{
//	const char* src = "abcd1234";
//	char dst[16] = "XYZ";
//	my_strcat(dst, src);
//	printf("dst:%s\n", dst);
//	return 0;
//}
//#include<stdio.h>
//#include<assert.h>
//int my_strcmp(const char* src, const char* dst)
//{
//	assert(src != NULL);
//	assert(dst != NULL);
//	int ret = 0;
//	while (!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
//	{
//		src++;
//		dst++;
//	}
//	if (ret < 0)
//	{
//		ret = -1;
//	}
//	else if (ret > 0)
//	{
//		ret = 1;
//	}
//	return ret;
//}
//int main()
//{
//	const char* str1 = "abc1234";
//	const char* str2 = "abcd1251";
//	int ret = my_strcmp(str1, str2);
//	printf("%d\n", ret);
//	return 0;
//}
//#include<stdio.h>
//#include<assert.h>
//void* memcry(void* dst, const void* src, size_t count)
//{
//	void* ret = dst;
//	assert(dst);
//	assert(src);
//	while (count--) {
//		*(char*)dst = *(char*)src;
//		dst = (char*)dst + 1;
//		src = (char*)src + 1;
//	}
//	return(ret);
//}
//int main()
//{
//	char str1[20] = "ab";
//	const char* str2 = "abcd";
//	memcry(str1,str2,4);
//	printf("%s",str1);
//	return 0;
//}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值