注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

头文件string.h中的函数(6)  

2014-06-15 20:32:57|  分类: C & C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

7.字符查找函数strchr

这个函数在C中只有一个版本,但是在C++中有两个版本的重载函数,但是使用起来并不会感到有什么差别,两个函数的定义如下:

const char* strchr (const char* str, int character);
char* strchr (char * str, int character);

简单来说就是我们提供的第一个参数如果是const char*则返回chonst char*类型,为char*则返回char*类型,因为第一种类型返回的指针不能修改,而第二种则可以修改,找到了就提供指向该字符的指针,并可操作其指向的地址空间中的内容,找不到就返回NULL。测试代码:

#include <stdio.h>
#include <string.h>
int main ()
{
    char str[]="see big!";
    char* c=strchr(str,'b');
    if(c==NULL)
        puts("not found.\n");
    else
        *c='p';
    puts(str);
    return 0;
}

程序将str中的b替换为p。

和这个函数类似的另一个函数则是strrchr,函数将从右边开始查找指定的字符。

另外,有时候我们可能需要查找的并不是第一个出现的字符,而是第二个、第三个等,其实实现起来也很容易,这里只实现其中的一个重载函数:

char* strchrnth(char* str,int character,int n)
{
    if(n<=0)
        return NULL;
    char* ps=str;
    int i=0;
    while(*ps!='\0')
    {
        if(*ps==character)
            i++;
        if(i==n)
            return ps;
        ps++;
    }
    return NULL;
}
对于从右边开始的版本,则略微有点复杂,但并不会难到哪里去。
8. 字符串查找strstr
这个函数和strchr类似,C中只有一个版本,但是在C++中有两个重载函数:
const char* strstr(const char* str1, const char* str2);
char* strstr(char* str1, const char* str2);
函数试图在str1中查找str提供的子字符串,如果找到了就返回str1中指向该子字符串的指针,否则返回NULL。测试代码如下:
#include <stdio.h>
#include <string.h>

int main ()
{
    char str[] ="This is a simple string";
    char * pch;
    pch = strstr (str,"simple");
    strncpy (pch,"sample",6);
    puts (str);
    return 0;
}
这段程序将Simple替换为sample,注意如果长度不一致,则会将后面的内容覆盖。
  评论这张
 
阅读(450)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016