Chinaunix首页 | 论坛 | 博客
  • 博客访问: 818026
  • 博文数量: 125
  • 博客积分: 4066
  • 博客等级: 上校
  • 技术积分: 1401
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-03 18:58
文章分类

全部博文(125)

文章存档

2014年(1)

2013年(1)

2012年(2)

2011年(29)

2010年(92)

我的朋友

分类: LINUX

2010-06-29 16:59:36

strrchr()函数:
strrchr()函数的作用是:
    查找一个字符串在另一个字符串中 末次 出现的位置,并返回从字符串中的这个位置起,一直到字符串结束的所有字符;
    如果未能找到指定字符,那么函数将返回False。

char *strrchr(
   char *str,
   int c
);
strrchr() 函数的分析
函数原型:extern char * strrchr (const char *s, int c)

参数说明:s为一个字符串的指针,c为一个待查找字符。
       
所在库名:#include
 
函数功能:查找在s字符串中最后一次出现字符c的位置。
 
返回说明:如果str 中存在字符ch,返回出现ch的位置的指针;否则返回NULL。

说明:
str
必要参数。指定需要进行搜索的字符串(字符串指针)
c
必要参数。指定需要查找的字符对象。如果是 一个数字,那么他将搜索与这个数字对应的ASCII值相匹配的字符


strrchr()函数源码:
/* 查找在s字符串中最后一次出现字符c的位置 */
char * strrchr (const char *s, int c)
{
    register const char *found, *p;

    c = (unsigned char) c;

    //如果查找的字符是结束符,直接用strchr 函数返回结束符号的位置。

    if (c == '\0')
        return strchr (s, '\0');


    //返回值(查找的字符地址)赋初值,很重要。
    found = NULL;

    //从当前字符串超找字符c,并将返回指针赋给p,如果p不等于NULL,则执行循环。

    //如果p等于NULL,说明已查找整个字符串,退出循环。
    while ( (p = strchr (s, c)) != NULL )
    {

        //暂存查找到的字符地址。
        found = p;

        //截取已经查找过的字符串(将返回地址p的下一个字符地址作为字符串开头)。
        s = p + 1;
    }

    //如果没有找到字符,则不会执行循环,found返回初值NULL。

    //如果找到字符,返回p赋给found的指针地址。

    return (char *) found;
}

函数举例:
#include
#include

void main()
{
    char * pCh = "";
    char * pFind = strrchr(pCh, '.');
    if ( pFind != NULL)
    {
        printf("%s\n", pFind);    //可以直接printf(pFind);printf("\n");左边的表达式是合二为一的表达方法;
    }
}

返回结果是:.com      //注意,有'.'而不是只返回com

阅读(5051) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~