代码之家  ›  专栏  ›  技术社区  ›  Vagnerr

标准C库中是否有多字符版本的strhr()?

  •  7
  • Vagnerr  · 技术社区  · 14 年前

    在c语言中,如果我想在一个字符串中搜索一个特定的字符,我可以执行以下操作

    char *p;
    p = (char *)strchr(buffer,'(');
    if(p){
        ....
    

    但如果我想搜索多个字符(或字符范围),例如“任意数字”,该怎么办。我知道我可以这样做

    char *p=0;
    char *i;
    for(i=buffer;*i!='\0';i++){
        if(*i >= '0' && *i <=9){
            p=i;
        }
    }
    
    if(p){
        ...
    

    假设一个正确终止的字符串等,但是否有一个标准的库函数已经提供了这个功能(希望更安全)

    1 回复  |  直到 14 年前
        1
  •  24
  •   Greg S    14 年前

    strpbrk ? 听起来挺合算的。

    const char * strpbrk ( const char * str1, const char * str2 );
    

    返回一个指向str1中第一个出现的属于str2的字符的指针,如果没有匹配项,则返回一个空指针

    编辑:链接是C++站点,但是 strpbrk 是标准C库的一部分。