strchr, wcschr, _mbschr, _mbschr_l
Находит символ в строке, используя текущий языковой стандарт или указанную категорию состояния преобразования LC_CTYPE.
Важно!
_mbschr и _mbschr_l невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.
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
Языковой стандарт, который необходимо использовать.
Возвращаемое значение
Каждая из этих функций возвращает указатель на первое вхождение c в str или NULL, если c не найден.
Заметки
Функция strchr находит первое вхождение c в str или возвращает NULL, если c не найден. Нулевой конечный символ включен в поиск.
wcschr, _mbschr и _mbschr_l являются версиями функции strchr для расширенных и многобайтовых символов. Аргументы и возвращаемое значение wcschr представляют собой двухбайтовые строки; аргументы и возвращаемое значение _mbschr представляют собой многобайтовые строки. _mbschr распознает последовательности многобайтовых символов. Кроме того, если строка — нулевой указатель, _mbschr вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, то _mbschr возвращает NULL и устанавливает errno в EINVAL. strchr и wcschr не проверяют свои параметры. В остальных случаях эти три функции ведут себя идентично.
Выходное значение зависит от настройки категории LC_CTYPE языкового стандарта; дополнительные сведения см. в разделе setlocale. Версии этих функций без суффикса _l используют текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта; версии с суффиксом _l идентичны, за исключением того, что они используют переданный параметр языкового стандарта. Для получения дополнительной информации см. Языковой стандарт.
В языке C эти функции принимают указатель const для первого аргумента. В языке C++ доступны две перегрузки. Перегрузка, принимающая указатель на const, возвращает указатель на const; версия, которая принимает указатель на не являющийся const, возвращает указатель на не const. Макрос _CONST_CORRECT_OVERLOADS определен, если доступны и const и не const версии этих функций. Если требуется не const функциональность для обеих перегрузок C++, укажите символ _CONST_RETURN.
Универсальное текстовое сопоставление функций
Подпрограмма TCHAR.H |
_UNICODE & _MBCS не определены |
_MBCS определено |
_UNICODE определено |
---|---|---|---|
_tcschr |
strchr |
_mbschr |
wcschr |
_n/a |
Н/Д |
_mbschr_l |
Н/Д |
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
strchr |
<string.h> |
wcschr |
<string.h> или <wchar.h> |
_mbschr, _mbschr_l |
<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 );
}
Эквивалент в .NET Framework
См. также
Ссылки
Интерпретация последовательностей в многобайтной кодировке
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