命名空间
变体
操作

strchr

来自 cppreference.cn
< c‎ | string‎ | byte
定义于头文件 <string.h>
char* strchr( const char* str, int ch );
(1)
/*QChar*/ *strchr( /*QChar*/ *str, int ch );
(2) (自 C23 起)
1) 在 `str` 指向的以空字符结尾的字节字符串中查找 `ch` 的第一次出现(在转换为 `char` 后,如同通过 `(char)ch` )。终止空字符被认为是字符串的一部分,可以在搜索 `'\0'` 时找到。
2) 类型通用函数,等同于 (1)。令 T 为不合格字符对象类型。
  • 如果 `str` 的类型是 `const T*`,则返回类型为 `const char*`。
  • 否则,如果 `str` 的类型为 `T*`,则返回类型为 `char*`。
  • 否则,行为未定义。
如果抑制了这些泛型函数中每个函数的宏定义以访问实际函数(例如,如果使用了 `(strchr)` 或函数指针),则实际函数声明 (1) 将可见。

如果 `str` 不是指向以空字符结尾的字节字符串的指针,则行为未定义。

目录

[编辑] 参数

str - 指向要分析的以空字符结尾的字节字符串的指针
ch - 要搜索的字符

[编辑] 返回值

指向 `str` 中找到的字符的指针,如果未找到该字符,则为空指针。

[编辑] 示例

#include <stdio.h>
#include <string.h>
 
int main(void)
{
    const char *str = "Try not. Do, or do not. There is no try.";
    char target = 'T';
    const char* result = str;
 
    while((result = strchr(result, target)) != NULL)
    {
        printf("Found '%c' starting at '%s'\n", target, result);
        ++result; // Increment result, otherwise we'll find target at the same location
    }
}

输出

Found 'T' starting at 'Try not. Do, or do not. There is no try.'
Found 'T' starting at 'There is no try.'

[编辑] 参考

  • C23 标准 (ISO/IEC 9899:2024)
  • 7.24.5.2 strchr 函数 (p: 待定)
  • C17 标准 (ISO/IEC 9899:2018)
  • 7.24.5.2 strchr 函数 (p: 待定)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.24.5.2 strchr 函数 (p: 367-368)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.21.5.2 strchr 函数 (p: 330)
  • C89/C90 标准 (ISO/IEC 9899:1990)
  • 4.11.5.2 strchr 函数

[编辑] 另请参阅

在数组中搜索字符的第一次出现
(函数) [编辑]
查找字符的最后一次出现
(函数) [编辑]
在一个字符串中查找另一个字符串中任意字符的第一个位置
(函数) [编辑]
C++ 文档中的 strchr