strchr
, , wcschr
_mbschr
_mbschr_l
Находит символ в строке, используя текущий языковой стандарт или указанную LC_CTYPE
категорию состояния преобразования.
Внимание
Функции _mbschr
и _mbschr_l
не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
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
не найдено. Область поиска включает завершающий символ 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
. Макрос _CRT_CONST_CORRECT_OVERLOADS
определяется, если доступны обе const
версии этих функций и неconst
являются. Если требуется поведение, отличноеconst
от обоих перегрузки C++, определите символ _CONST_RETURN
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
TCHAR.H рутина |
_UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tcschr |
strchr |
_mbschr |
wcschr |
Требования
Маршрут | Обязательный заголовок |
---|---|
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 );
}
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_l
wcsncat
_mbsncat
,_mbsncat_l
strncmp
, , wcsncmp
_mbsncmp
_mbsncmp_l
strncpy
, , _strncpy_l
_wcsncpy_l
wcsncpy
_mbsncpy
,_mbsncpy_l
_strnicmp
, , _wcsnicmp
_strnicmp_l
_mbsnicmp
_wcsnicmp_l
,_mbsnicmp_l
strpbrk
, , wcspbrk
_mbspbrk
_mbspbrk_l
strrchr
, , wcsrchr
_mbsrchr
_mbsrchr_l
strstr
, , wcsstr
_mbsstr
_mbsstr_l