Condividi tramite


strchr, wcschr, _mbschr, _mbschr_l

Trova un carattere in una stringa, utilizzando le impostazioni locali correnti o una categoria specifica della conversione dello stato LC_CTYPE.

Importante

_mbschr e _mbschr_l non possono essere utilizzate nelle applicazioni che vengono eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /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

Parametri

  • str
    Stringa di origine con terminazione null.

  • c
    Carattere da localizzare.

  • locale
    Impostazioni locali da utilizzare.

Valore restituito

Ognuna di queste funzioni restituisce un puntatore alla prima occorrenza di c in str, o NULL se c non viene trovato.

Note

La funzione strchr cerca la prima occorrenza di c in str, o restituisce NULL se c non viene trovato. Il carattere di terminazione null è incluso nella ricerca.

wcschr, _mbschr e _mbschr_l sono versioni a caratteri wide e caratteri multibyte di strchr. Gli argomenti e il valore restituito di wcschr sono stringhe di caratteri di tipo "wide", quelli di _mbschr sono stringhe di caratteri multibyte. _mbschr riconosce le sequenze di caratteri multibyte. Inoltre, se la stringa è un puntatore null, _mbschr richiama il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, _mbschr ritorna NULL e imposta errno a EINVAL. strchr e wcschr non convalidano i relativi parametri. Altrimenti queste tre funzioni si comportano in modo identico.

Il valore di output è interessato dall'impostazione di categoria LC_CTYPE delle impostazioni locali; per ulteriori informazioni, vedere setlocale. Le versioni di queste funzioni senza il suffisso _l utilizzano le impostazioni locali correnti per il comportamento dipendente dalle impostazioni locali; le versioni con il suffisso _l sono identiche, ad eccezione del fatto che utilizzano il parametro delle impostazioni locali che viene passato. Per ulteriori informazioni, vedere Impostazioni locali.

In C, queste funzioni accettano un puntatore const come primo argomento. In C++, sono disponibili due overload. L'overload che accetta un puntatore a const restituisce un puntatore a const; la versione che accetta un puntatore a un non-const non restituisce un puntatore a un non-const. La macro _CONST_CORRECT_OVERLOADS è definito se è entrambe le versioni const e non-const di queste funzioni sono disponibili. Se è necessario che entrambi gli overload C++ abbiano il comportamento non-const, definire il simbolo _CONST_RETURN.

Mapping di routine su testo generico

Routine TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcschr

strchr

_mbschr

wcschr

_n/a

n/d

_mbschr_l

n/d

Requisiti

Routine

Intestazione obbligatoria

strchr

<string.h>

wcschr

<string.h> o <wchar.h>

_mbschr, _mbschr_l

<mbstring.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.

Esempio

// 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 );
}
  

Equivalente .NET Framework

System::String::IndexOf

Vedere anche

Riferimenti

Modifica di stringhe (CRT)

Impostazioni locali

Interpretazione di sequenze di caratteri multibyte

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