浅谈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;
}


你可能感兴趣的:(浅谈my_strchr() 与my_strrchr()函数)