模拟实现strrchr,strchr
首先我是个渣渣,本文仅限参考
1、要模拟strrchr,首先得先弄清strrchr是个什么东西
strrchr() 函数查找字符在指定字符串中从后面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符,如果失败,则返回 false。与之相对应的是strchr()函数,它查找字符串中首次出现指定字符的位置。
知道这个就好办了
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
char*my_strrchr(char*str,char ch,int len)
{
str=str+len-1;
assert(str);
while(*str!='\0')
{
if(*str==ch)
return str;
str--;
}
return 0;
}
int main()
{
int ch=0;
char arr[]="ab cdab cdfg";
int len=strlen(arr);
printf("请输入要查的字符");
scanf("%c",&ch);
printf("%s\n",my_strrchr(arr,ch,len));
system("pause");
return 0;
}
代码比较简单,能力有限
2、同样需知道strchr是个什么鬼
功能:查找字符串s中首次出现字符c的位置
说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char*my_strchr(char*str,char ch)
{
assert(str);
while(*str!='\0')
{
if(*str==ch)
return str;
str++;
}
return 0;
}
int main()
{
char ch=0;
char arr[]="abcdabcdefgh";
printf("请输入要查的字符");
scanf("%c",&ch);
printf("%s\n",my_strchr(arr,ch));
system("pause");
return 0;
}
代码比较相似,今天比较累,就写这些了,谢谢