命名空间
变体
操作

strchr

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

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

内容

[编辑] 参数

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

[编辑] 返回值

指向 str 中找到的字符的指针,如果未找到此类字符,则为 null 指针。

[编辑] 示例

#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: TBD)
  • C17 标准 (ISO/IEC 9899:2018)
  • 7.24.5.2 strchr 函数 (p: TBD)
  • 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