Udostępnij za pośrednictwem


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

_mbschrnie 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 strelemecie , lub NULL jeśli c nie zostanie znaleziona.

Uwagi

Funkcja strchr znajduje pierwsze wystąpienie elementu w elemecie c strlub 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ść EINVALerrno . 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