Share via


strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Localizar o símbolo seguir em uma cadeia de caracteres, usando a localidade atual ou uma localidade especificada passada em.Versões mais seguros dessas funções estão disponíveis; consulte strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

Observação importanteImportante

_mbstok e _mbstok_l não podem ser usados em aplicativos executados em Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT não suportadas com /ZW.

char *strtok( char *strToken, const char *strDelimit ); wchar_t *wcstok( wchar_t *strToken, const wchar_t *strDelimit ); unsigned char *_mbstok( unsigned char*strToken, const unsigned char *strDelimit ); unsigned char *_mbstok( unsigned char*strToken, const unsigned char *strDelimit, _locale_t locale );

Parâmetros

  • strToken
    Cadeia de caracteres que contém o símbolo ou os tokens.

  • strDelimit
    Conjunto de caracteres de delimitador.

  • locale
    A localidade usar.

Valor de retorno

Retorna um ponteiro para o símbolo seguir encontrado em strToken.Retornam NULL quando não mais token for encontrado.Cada chamada altera strToken substituindo um caractere de NULL para o primeiro delimitador que ocorre após o símbolo retornado.

Comentários

A função de strtok localiza o símbolo seguir em strToken.O conjunto de caracteres em strDelimit especifica delimitadores possíveis do símbolo a ser encontrado em strToken na chamada atual.wcstok e _mbstok são versões de largo- caractere e o caractere multibyte- de strtok.Os argumentos e o valor de retorno de wcstok são cadeias de caracteres de largo- caractere; essas de _mbstok são cadeias de caracteres de multibyte- caractere.Essas três funções se comportam de forma idêntica.

Observação de segurançaObservação de segurança

Essas funções têm uma ameaça potencial causada por um problema de estouro de buffer.Problemas de estouro de buffer são um método frequente de ataque do sistema, resultando em uma despropositado elevação de privilégio.Para obter mais informações, consulte Evitando estouros de buffer.

Na primeira chamada a strtok, a função pula delimitadores chave e retorna um ponteiro para o primeiro símbolo, finalizando em strTokeno símbolo com um caractere nulo.Mais tokens podem ser estoirados do restante de strToken por uma série de chamadas a strtok.Cada chamada a strtokaltera strToken inserindo um caractere nulo após token retornado pelo chamada.Para ler o seguinte símbolo de strToken, chame strtok com um valor de NULL para o argumento de strToken .O argumento de NULLstrToken faz com que strtok procure pelo token seguir em strTokenalterado.O argumento de strDelimit pode ter qualquer valor de uma chamada ao seguinte para que o conjunto de delimitadores pode variar.

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

ObservaçãoObservação

Cada função usa uma variável estática com local de analisar a cadeia de caracteres em tokens.Como consequência, várias threads simultaneamente podem chamar essas funções sem efeitos indesejados.No entanto, em um único segmento, intercalar chamadas a uma dessas funções são altamente provável gerar a corrupção de dados e resultados imprecisas.Quando diferentes cadeias de caracteres de análise, que suporte o analisa uma cadeia de caracteres antes de iniciar para analisar o seguinte.Além disso, esteja ciente do potencial para o perigo ao chamar uma dessas funções de dentro de um loop onde outra função é chamada.Se a outra função acaba usando uma dessas funções, uma sequência intercalada de chamadas resultará, disparando a corrupção de dados.

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _MBCS não definidos

_MBCS definido

_UNICODE definido

_tcstok

strtok

_mbstok

wcstok

_tcstok

_strtok_l

_mbstok_l

_wcstok_l

Requisitos

Rotina

Cabeçalho necessário

strtok

<string.h>

wcstok

<string.h> ou <wchar.h>

_mbstok, _mbstok_l

<mbstring.h>

Para informações extras de compatibilidade Compatibilidade na introdução, consulte.

Exemplo

// crt_strtok.c
// compile with: /W3
// In this program, a loop uses strtok
// to print all the tokens (separated by commas
// or blanks) in the string named "string".
//
#include <string.h>
#include <stdio.h>

char string[] = "A string\tof ,,tokens\nand some  more tokens";
char seps[]   = " ,\t\n";
char *token;

int main( void )
{
   printf( "Tokens:\n" );
 
   // Establish string and get the first token:
   token = strtok( string, seps ); // C4996
   // Note: strtok is deprecated; consider using strtok_s instead
   while( token != NULL )
   {
      // While there are tokens in "string"
      printf( " %s\n", token );

      // Get next token: 
      token = strtok( NULL, seps ); // C4996
   }
}
  

Equivalência do .NET Framework

Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Manipulação de cadeia de caracteres (CRT)

Localidade

Interpretação de seqüências de caracteres Multibyte

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l