【C语言】模拟实现strchr,strrchr,strrstr.

1.模拟实现strchr,该函数的功能是在一个字符串里查找出第一次出现的某个字符,返回该字符第一次出现的地址,找不到则返回空。例如:strchr("i am a student ",'a')它会返回am a student 。

实现:

#include<stdio.h>
#include<assert.h>

char *my_strchr(const char *arr, char c)     //对被查找字符串加保护,使得程序更安全
{
	assert(arr);                             //检验传过来的字符串
	while (*arr)
	{
		if (*arr == c)
		{
			return arr;
		}
		else arr++;
	}
	return NULL;
}

int main()
{
	char arr[] = "i am a student";
	char *ret = my_strchr(arr, 'a');     //这里在arr字符串数组里查找a
	printf("%s", ret);                   //结果为am a student
	getchar();
	return 0;
}
2.模拟实现strrchr, 该函数的功能是在一个字符串里查找出最后一次出现的某个字符,返回该字符最后一次出现的地址,找不到则返回空。例如:strrchr("i am a student ",'a')它会返回a student 。

#include<stdio.h>
#include<assert.h>
char *my_strrchr(char *arr, char ch)
{
	assert(arr);
	char *ret = NULL;
	while (*arr)
	{
		if (*arr == ch)
		{
			ret = arr;
			arr++;
		}
		else
			arr++;
	}
	return ret;
}

int main()
{
	char arr[]="i am a student";
	char *ret = my_strrchr(arr, 'a');
	printf("%s", ret);
	getchar();
	return 0;
}
3.模拟实现strrstr,该函数的功能是在一个字符串中查找子字符串最后一次出现的位置。

#include<stdio.h>
#include<assert.h>

char *my_strrstr(const char *dest,const char *str)
{
	assert(dest);
	assert(str);
	const char *str1 = str;
	char *tmp = NULL;
	while (*dest)
	{
		while (*dest == *str1)
		{
			dest++;
			str1++;
		}
		if (*str1 == '\0')
		{
			tmp = (char*)dest;
			str1 = str;
		}
		dest++;
	}
	return tmp;
}

int main()
{
	char arr[] = "banana";
	char *ret = my_strrstr(arr, "na");
	printf("%s", ret);
	getchar();
	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值