浅谈my_strchr() 与my_strrchr()函数

  strstr() 函数实现从一个字符串中找到一个字符第一次出现的地址并返回它

  strrstr() 函数实现从一个字符串中找到一个字符最后一次出现的地址并返回它

/****************************************  
*  File Name  : strchr.c  
*  Creat Data : 2015.3.21 
*  Author     : wk  
*****************************************/ 

#include<stdio.h>
#include<assert.h>
char const * my_strchr(char const  *str,int ch)//在str 字符串中找到 ch 字符第一次出现的位置并且返回出现位置的地址
{
	  assert('\0'!=*str);//断言,判断 str 字符串是否为空
	   //assert(NULL!=str);
	while('\0'!=*str)
	{
	   if(ch==*str)
	   {
		return str;//因为参数str 为const类型所以必须返回值也是const
	   }
	   str++;
	}
   return NULL; 
}//找到字符就返回该字符地址,没找到返回零

char  const *my_strrchr(char const  *str,char ch)
{
	assert('\0'!=*str);//断言,判断 str 字符串是否为空
	   //assert(NULL!=str);
	char const *last = NULL;//定义一个字符指针赋值为空
	char const *cur = my_strchr(str,ch);//先调用my_strchr()找一次
	while(cur != NULL)
	{
		last = cur;//存放第一次查找到的字符ch
		cur = my_strchr(cur+1,ch);//从ch 之后一个字符开始向后查找直到最后一个
	 
	}
	return last;//最后一个找到就返回该字符地址,如果没找到就返回第一次my_strchr()找到的,否则就是第一次也没找到就返回NULL
}               //因为参数str 为const类型所以必须返回值也是const

/****************************************  
*  File Name  : main.c  
*  Creat Data : 2015.3.21 
*  Author     : wk  
*****************************************/ 
#include<strchr.h>
int main()//main 函数用来测试my_strchr()
{
   char *s="abcdef";
   printf("%s\n",my_strchr(s,'d'));//输出def,说明成功
    //char *s="";
    //printf("%s\n",my_strchr(s,'d'));//测试 assert()断言是否正确
return 0;
}


int main()//main 函数用来测试my_strrchr()
{
	char *arr ="abbdefe";
    printf("%s\n",my_strrchr(arr,'b'));//输出 bdefe 
   //char *s="";
   //printf("%s\n",my_strchr(s,'d'));//测试 assert()断言是否正确
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值