C/C++语言函数库 strchar, strrchar, strstr, strrstr 使用及实现

在c/c++中 经常遇到 在一个字符串中查找字符 或者查找子串的情况

srtchar,strrchar函数原型声明

char *strchr(const char *string,int c)

char *strrchr(const char *string,int c)

strchar 函数是在字符string 中寻找第一个出现的字符c  并返回位置

strchar 函数是在字符string 中寻找最后一个出现的字符c  并返回位置

strchar 代码实现及测试

#include "stdio.h"
#include "string.h"
#include "assert.h"

char *my_strchr(const char * str,int ch)
{
	char *p = NULL;
	assert(str);
	p = str;
	while(*p != '\0')
	{
		if(*p == ch)
			return p;
		p++;
	}
	return NULL;
}

int main(void)
{
	char str[] = "i love you forever!";
	char *ret = NULL;
	char ch;
	printf("输入你想要查找的字符 : ");
	scanf("%c",&ch);
	
	ret = strchr(str,ch);
	if(ret != NULL)
	{
		printf("你要查找的字符是:%c\n",*ret);
		printf("剩下字符串:%s\n",ret);
	}
	else
	{
		printf("sorry 没有查找到字符串\n");
	}
}

输出:

类似的srtstr,strrstr函数原型声明

char *strstr(const char *s1,const char *s2)
char *strrstr(const char *s1,const char *s2)

strstr 函数是在字符s中寻找第一个出现的子串s2  并返回位置

strrstr 函数是在字符string 中寻找最后一个出现的子串s2  并返回位置

strrchar 代码:

char *my_strrchr(const char * str,int ch)
{
	char *p = NULL;
	char *pstr =  NULL;
	assert(str);
	p = str;
	while(*p != '\0')
	{
		if(*p == ch)
			//return p;
			pstr = p;
		p++;
	}
	if(pstr != NULL)
	{
		return pstr;
	}
	return NULL;
}

strstr代码:

char *my_strstr(const char * str0,const char *str1)
{
	char *pos = NULL;
	char *p1 = NULL;
	char *p0 = NULL;
	
	assert(str0);
	assert(str1);
	pos = str0;
	
	while(*pos != '\0')
	{
		p0 = pos;
		p1 = str1;
		//while((*p1 != '\0')&& (*p0 != '\0') && (*p1 == *p0))
		while(*p1 != '\0'&& *p0 != '\0')
		{
			if(*p1 != *p0)
			{
				break;
			}
			p0++;
			p1++;
		}
		if(*p1 == '\0')
		{
			return pos;
		}
		pos++;
	}
	return NULL;
}

strrstr代码

char *my_strrstr(const char * str0,const char *str1)
{
	char *pos = NULL;
	char *p1 = NULL;
	char *p0 = NULL;
	char *last_str = NULL;
	assert(str0);
	assert(str1);
	pos = str0;
	
	while(*pos != '\0')
	{
		p0 = pos;
		p1 = str1;
		//while(*p1 != '\0'&& *p0 != '\0')
		while((*p1 != '\0')&& (*p0 != '\0') && (*p1 == *p0))
		{
			p0++;
			p1++;
		}
		if(*p1 == '\0')
		{
			last_str =  pos;
		}
		pos++;
	}
	if(last_str != NULL)
	{
		return last_str;
	}
	return NULL;
}

strstr函数运行效果

strrstr函数运行效果 

猜你喜欢

转载自blog.csdn.net/qq_29796781/article/details/81535420