在标准库中已经给出strchar 和 strrchr 两个函数可以很直接调用。
函数原型如下
<span style="font-size:24px;">char *strchr(char const *str,int ch)
char *strrchr(char const *str,int ch)
</span>
在这里它们的第二个参数是整型值,在程序中是以 ASCII 值存在的。strchr函数是在字符串str中找字符ch第一次出现的位置,找到后返回指向该位置的指针,如果没找到返回NULL。而strrchr函数与strchr功能一致,只是返回的是指向该字符最后一次出现的位置。
现自定义实现strrchr函数的功能
主要思路:定义字符串指针right指向字符串str最后一个,然后一直向前找,循环的条件right>str
代码如下:
#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strrchr(char *str,int ch)
{
int len=strlen(str);
char *right=str+len-1;
assert(str!=NULL);
while(right>=str)
{
if(*right==ch)
return right;
right--;
}
return NULL;
}
int main()
{
char q[15]="hello world!";
char *ans;
ans=my_strrchr(q,'4');
if(ans!=NULL)
printf("%c\n",*ans);
else
printf("无此字符。\n");
return 0;
}
运行结果:
成功找个此字符:
没有找到字符: