Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Находит символ в строке, используя текущий языковой стандарт или указанную 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 или strNULL если 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_lwcsncat_mbsncat,_mbsncat_l
strncmp, , wcsncmp_mbsncmp_mbsncmp_l
strncpy, , _strncpy_l_wcsncpy_lwcsncpy_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