使用当前区域设置或指定的 LC_CTYPE 转换状态类别查找字符串中的字符。
重要
_mbschr 和 _mbschr_l 无法用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
char *strchr(
const char *str,
int c
); // C only
char *strchr(
char * str,
int c
); // C++ only
const char *strchr(
const char * str,
int c
); // C++ only
wchar_t *wcschr(
const wchar_t *str,
wchar_t c
); // C only
wchar_t *wcschr(
wchar_t *str,
wchar_t c
); // C++ only
const wchar_t *wcschr(
const wchar_t *str,
wchar_t c
); // C++ only
unsigned char *_mbschr(
const unsigned char *str,
unsigned int c
); // C only
unsigned char *_mbschr(
unsigned char *str,
unsigned int c
); // C++ only
const unsigned char *_mbschr(
const unsigned char *str,
unsigned int c
); // C++ only
unsigned char *_mbschr_l(
const unsigned char *str,
unsigned int c,
_locale_t locale
); // C only
unsigned char *_mbschr_l(
unsigned char *str,
unsigned int c,
_locale_t locale
); // C++ only
const unsigned char *_mbschr_l(
const unsigned char *str,
unsigned int c,
_locale_t locale
); // C++ only
参数
str
null 终止的源字符串。
c
要查找的字符。
locale
要使用的区域设置。
返回值
其中每个函数都会返回指向 str 中 c 的第一个匹配项的指针,如果找不到 c,则返回 NULL。
备注
strchr 函数查找 str 中 c 的第一个匹配项,如果找不到 c,则返回 NULL。 搜索中包括 null 终止的字符。
wcschr、_mbschr 和 _mbschr_l 是 strchr 的宽字符及多字节字符版本。 wcschr 的自变量和返回值为宽字符字符串。 _mbschr 的自变量和返回值为多字节字符字符串。 _mbschr 可识别多字节字符序列。 同样,如果字符串为空指针,则 _mbschr 将调用无效参数处理程序,如参数验证中所述。 如果允许继续执行,则 _mbschr 返回 NULL,并将 errno 设置为 EINVAL。 strchr 和 wcschr 不会验证其参数。 否则这三个函数否则具有相同行为。
输出值受区域设置的 LC_CTYPE 类别设置影响;有关详细信息,请参阅 setlocale。 这些不带 _l 后缀的函数的版本使用为该区域设置相关的行为的当前区域设置;带有 _l 后缀的版本相同,只不过它们使用传递的区域设置参数。 有关详细信息,请参阅 Locale。
在 C 中,这些函数采用第一个参数的一个 const 指针。 在 C++ 中,有两个重载可用。 采用指向 const 的指针的重载返回指向 const 的指针;采用指向非const 的版本的指针返回指向非const 的指针。 如果这些函数的 const 和非 const 版本可用,则会定义宏 _CRT_CONST_CORRECT_OVERLOADS。 如果这两个 C++ 重载都需要非 const 行为,请定义符号 _CONST_RETURN。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
TCHAR.H 例程 |
_UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
|---|---|---|---|
_tcschr |
strchr |
_mbschr |
wcschr |
要求
| 例程 | 必需的标头 |
|---|---|
strchr |
<string.h> |
wcschr |
<string.h> 或 <wchar.h> |
| %> | <mbstring.h> |
有关兼容性的更多信息,请参见 兼容性。
示例
// crt_strchr.c
//
// This program illustrates searching for a character
// with strchr (search forward) or strrchr (search backward).
//
#include <string.h>
#include <stdio.h>
int ch = 'r';
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";
int main( void )
{
char *pdest;
int result;
printf_s( "String to be searched:\n %s\n", string );
printf_s( " %s\n %s\n\n", fmt1, fmt2 );
printf_s( "Search char: %c\n", ch );
// Search forward.
pdest = strchr( string, ch );
result = (int)(pdest - string + 1);
if ( pdest != NULL )
printf_s( "Result: first %c found at position %d\n",
ch, result );
else
printf_s( "Result: %c not found\n", ch );
// Search backward.
pdest = strrchr( string, ch );
result = (int)(pdest - string + 1);
if ( pdest != NULL )
printf_s( "Result: last %c found at position %d\n", ch, result );
else
printf_s( "Result:\t%c not found\n", ch );
}
String to be searched:
The quick brown dog jumps over the lazy fox
1 2 3 4 5
12345678901234567890123456789012345678901234567890
Search char: r
Result: first r found at position 12
Result: last r found at position 30