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

Posted

技术标签:

【中文标题】标准 C 库中是不是有 strchr() 的多字符版本?【英文标题】:Is there a multiple character version of strchr() in the standard C libraries?标准 C 库中是否有 strchr() 的多字符版本? 【发布时间】:2010-07-15 16:39:09 【问题描述】:

在 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】:

strpbrk 呢?听起来它符合您的要求。

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

“返回指向 str1 中第一次出现的 str2 中任何字符的指针,如果没有匹配则返回空指针。”

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

【讨论】:

谢谢。我认为这正是我所需要的。 +1- 很好的答案。完全符合要求并在 OP 的约束范围内。

以上是关于标准 C 库中是不是有 strchr() 的多字符版本?的主要内容,如果未能解决你的问题,请参考以下文章

字符数组

C 中的 Vigenere 代码因多字符键而崩溃

关于Unicode和多字符字集。

Python getopt 中的多字符命令解析

想要编写(或使用现有的?)UDF 来读取具有多字符分隔符的文件

灵活警告多字符字符常量