strchr
, , wcschr
, , _mbschr
_mbschr_l
Znajduje znak w ciągu przy użyciu bieżących ustawień regionalnych lub określonej LC_CTYPE
kategorii stanu konwersji.
Ważne
_mbschr
nie można jej _mbschr_l
używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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
Parametry
str
Ciąg źródłowy zakończony wartością null.
c
Znak do zlokalizowania.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Każda z tych funkcji zwraca wskaźnik do pierwszego wystąpienia c
elementu w str
elemecie , lub NULL
jeśli c
nie zostanie znaleziona.
Uwagi
Funkcja strchr
znajduje pierwsze wystąpienie elementu w elemecie c
str
lub zwraca NULL
wartość , jeśli c
nie zostanie znaleziona. Znak zakończenia o wartości null jest uwzględniony w wyszukiwaniu.
wcschr
_mbschr
, i _mbschr_l
są wersjami znaków wielobajtowych i wielobajtowych .strchr
Argumenty i wartość zwracana wcschr
wartości to ciągi wieloznakowe. Argumenty i wartość zwracana wartości to ciągi wielobajtowe _mbschr
znaków. _mbschr
rozpoznaje sekwencje znaków wielobajtowych. Ponadto jeśli ciąg jest wskaźnikiem o wartości null, _mbschr
wywołuje nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, _mbschr
zwraca NULL
i ustawia wartość EINVAL
errno
. strchr
i wcschr
nie weryfikuj ich parametrów. Te trzy funkcje zachowują się identycznie inaczej.
Na wartość wyjściową ma wpływ ustawienie ustawienia LC_CTYPE
kategorii ustawień regionalnych. Aby uzyskać więcej informacji, zobacz setlocale
. Wersje tych funkcji bez sufiksu _l
używają bieżących ustawień regionalnych dla tego zachowania zależnego od ustawień regionalnych. Wersje z _l
sufiksem są identyczne, z tą różnicą, że używają parametru ustawień regionalnych przekazanych zamiast. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
W języku C te funkcje przyjmują const
wskaźnik dla pierwszego argumentu. W języku C++dostępne są dwa przeciążenia. Przeciążenie zwracające wskaźnik, aby const
zwrócić wskaźnik do const
; wersja, która przyjmuje wskaźnik do wartości innej niż wskaźnikconst
, zwraca wskaźnik do wartości innejconst
niż. Makro _CRT_CONST_CORRECT_OVERLOADS
jest definiowane, jeśli dostępne są zarówno const
wersje, jak i inneconst
niż. Jeśli potrzebujesz zachowania dlaconst
obu przeciążeń języka C++, zdefiniuj symbol _CONST_RETURN
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcschr |
strchr |
_mbschr |
wcschr |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
strchr |
<string.h> |
wcschr |
<string.h> lub <wchar.h> |
_mbschr , _mbschr_l |
<mbstring.h> |
Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Manipulowanie ciągami
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
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