_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
null 终止的源字符串。

要查找的字符。

locale
要使用的区域设置。

其中每个函数返回指向第一个匹配cstr的指针,或者NULLc找不到。

strchr函数查找第一个输入str项,如果未找到,则返回NULLc该函数c。 搜索中包括 null 终止的字符。

wcschr_mbschr_mbschr_lstrchr 的宽字符及多字节字符版本。 参数和返回值为 wcschr 宽字符字符串。 参数和返回值为 _mbschr 多字节字符串。 _mbschr 可识别多字节字符序列。 此外,如果字符串是空指针, _mbschr 则调用无效的参数处理程序,如 参数验证中所述。 如果允许继续执行,则 _mbschr 返回 NULL,并将 errno 设置为 EINVALstrchrwcschr 不验证其参数。 否则这三个函数否则具有相同行为。

输出值受区域设置的 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 已定义 // 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 ); 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 ); 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

字符串操作
多字节字符序列的解释
strcspn, wcscspn, _mbscspn, _mbscspn_l
strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strpbrk, wcspbrk, _mbspbrk, _mbspbrk_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strstr, wcsstr, _mbsstr, _mbsstr_l