Partilhar via


strstr, wcsstr, _mbsstr, _mbsstr_l

Retorna um ponteiro para a primeira ocorrência de uma cadeia de caracteres de pesquisa em uma cadeia de caracteres.

Importante

_mbsstr e _mbsstr_l não podem ser usados em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.

Sintaxe

char *strstr(
   const char *str,
   const char *strSearch
); // C only
char *strstr(
   char *str,
   const char *strSearch
); // C++ only
const char *strstr(
   const char *str,
   const char *strSearch
); // C++ only
wchar_t *wcsstr(
   const wchar_t *str,
   const wchar_t *strSearch
); // C only
wchar_t *wcsstr(
   wchar_t *str,
   const wchar_t *strSearch
); // C++ only
const wchar_t *wcsstr(
   const wchar_t *str,
   const wchar_t *strSearch
); // C++ only
unsigned char *_mbsstr(
   const unsigned char *str,
   const unsigned char *strSearch
); // C only
unsigned char *_mbsstr(
   unsigned char *str,
   const unsigned char *strSearch
); // C++ only
const unsigned char *_mbsstr(
   const unsigned char *str,
   const unsigned char *strSearch
); // C++ only
unsigned char *_mbsstr_l(
   const unsigned char *str,
   const unsigned char *strSearch,
   _locale_t locale
); // C only
unsigned char *_mbsstr_l(
   unsigned char *str,
   const unsigned char *strSearch,
   _locale_t locale
); // C++ only
const unsigned char *_mbsstr_l(
   const unsigned char *str,
   const unsigned char *strSearch,
   _locale_t locale
); // C++ only

Parâmetros

str
Cadeia de caracteres terminada em nulo para pesquisa.

strSearch
Cadeia de caracteres terminada em nulo para pesquisar.

locale
Localidade a usar.

Valor retornado

Retorna um ponteiro para a primeira ocorrência de strSearch em str, ou NULL se strSearch não aparecer em str. Se strSearch aponta para uma cadeia de caracteres de comprimento zero, a função retornará str.

Comentários

A função strstr retorna um ponteiro para a primeira ocorrência de strSearch em str. A pesquisa não inclui caracteres nulos de terminação. wcsstr é a versão de caractere largo de strstr e _mbsstr é a versão de caracteres multibyte. Os argumentos e o valor retornado de wcsstr são cadeias de caracteres largos. Os argumentos e o valor retornado de são cadeias de _mbsstr caracteres multibyte. _mbsstr valida seus parâmetros. Se str ou strSearch for NULL, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, _mbsstr definirá errno para EINVAL e retornará 0. strstr e wcsstr não validam seus parâmetros. Caso contrário, essas três funções se comportam de forma idêntica.

Importante

Essas funções podem incorrer uma ameaça de um problema de estouro de buffer. Problemas de estouro de buffer podem ser usados para atacar um sistema pois eles podem permitir a execução de código arbitrário, que pode causar uma injustificada elevação de privilégio. Para obter mais informações, confira Como evitar sobrecargas de buffer.

Em C, essas funções usam um ponteiro const para o primeiro argumento. No C++, duas sobrecargas estão disponíveis. A sobrecarga de colocar um ponteiro para const retorna um ponteiro para const; a versão que usa um ponteiro para não const retorna um ponteiro para não const. A macro _CRT_CONST_CORRECT_OVERLOADS é definida se as versões const e não const dessas funções estão disponíveis. Se você precisar do comportamento não const para as sobrecargas de C++, defina o símbolo _CONST_RETURN.

O valor de saída é afetado pela configuração de categoria da localidade de LC_CTYPE. Para obter mais informações, consulte setlocale, _wsetlocale. As versões dessas funções que não têm o _l sufixo usam a localidade atual para esse comportamento dependente de localidade; as versões que têm o _l sufixo são idênticas, exceto que, em vez disso, usam o parâmetro locale que é passado. Para obter mais informações, consulte Localidade.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Mapeamentos de rotina de texto genérico

Rotina TCHAR.H _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tcsstr strstr _mbsstr wcsstr
n/a n/a _mbsstr_l n/a

Requisitos

Rotina Cabeçalho necessário
strstr <string.h>
wcsstr <string.h> ou <wchar.h>
_mbsstr, _mbsstr_l <mbstring.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// crt_strstr.c

#include <string.h>
#include <stdio.h>

char str[] =    "lazy";
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( "String to be searched:\n   %s\n", string );
   printf( "   %s\n   %s\n\n", fmt1, fmt2 );
   pdest = strstr( string, str );
   result = (int)(pdest - string + 1);
   if ( pdest != NULL )
      printf( "%s found at position %d\n", str, result );
   else
      printf( "%s not found\n", str );
}
String to be searched:
   The quick brown dog jumps over the lazy fox
            1         2         3         4         5
   12345678901234567890123456789012345678901234567890

lazy found at position 36

Confira também

Manipulação de cadeia de caracteres
Localidade
Interpretação de sequências de caracteres multibyte
strcspn, wcscspn, _mbscspn, _mbscspn_l
strcmp, wcscmp, _mbscmp
strpbrk, wcspbrk, _mbspbrk, _mbspbrk_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn, wcsspn, _mbsspn, _mbsspn_l
basic_string::find