Namespaces
Variants

strchr

From cppreference.net
< c ‎ | string ‎ | byte
定义于头文件 <string.h>
char * strchr ( const char * str, int ch ) ;
(1)
/*QChar*/ * strchr ( /*QChar*/ * str, int ch ) ;
(2) (C23 起)
1) 在由 str 指向的以空字符结尾的字节字符串中(每个字符被解释为 unsigned char ),查找 ch (经 ( char ) ch 方式转换为 char )的首次出现。终止空字符被视为字符串的一部分,在搜索 ' \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: TBD)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.24.5.2 strchr 函数 (p: 待定)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.24.5.2 strchr 函数 (页码: 367-368)
  • C99标准(ISO/IEC 9899:1999):
  • 7.21.5.2 strchr函数(页码:330)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 4.11.5.2 strchr 函数

参见

在数组中搜索字符的首次出现
(函数)
查找字符的最后一次出现
(函数)
在一个字符串中查找另一个字符串中任意字符的首个位置
(函数)