strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Localizar o próximo token em uma seqüência de caracteres, usando a localidade corrente ou uma localidade específica passado.Versões mais seguras dessas funções estão disponível; consulte strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

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
    Seqüência que contém o símbolo ou símbolos.

  • strDelimit
    Conjunto de caracteres de delimitador.

  • locale
    Localidade usar.

Valor de retorno

Retorna um ponteiro para o próximo token encontrado em strToken. Elas retornam NULL Quando nenhum símbolo mais é encontrado. Cada telefonar modifica strToken substituindo um NULL caractere para o primeiro delimitador que ocorre após o token retornado.

Comentários

The strtok função localiza o próximo token em strToken. O conjunto de caracteres em strDelimit Especifica delimitadores possíveis do token a ser localizado em strToken na telefonar corrente. wcstok e _mbstoksão versões de caractere largo e caracteres de multibyte de strtok. Os argumentos e o valor retornado do wcstok são caractere largos strings; as de _mbstok são seqüências de caractere de multibyte. Especifique estas três funções identicamente outro comportam.

Observação de segurança:

Essas funções incorrer em uma ameaça potencial colocada um problema de saturação de buffer.Problemas de saturação de buffer são um método de ataque do sistema, resultando em uma elevação do privilégio unwarranted freqüente.Para obter mais informações, consulte Evitar saturações de buffer.

Na primeira telefonar strtok, a função ignora delimitadores entrelinhamento e retorna um ponteiro para o primeiro token na strToken, o token com um caractere nulo de terminação. Podem ser divididos mais tokens do restante da strToken por uma série de chamadas para strtok. Each call to strtokmodifies strToken by inserting a null character after the token returned by that call.Para ler o próximo token de strToken, telefonar strtok com um NULL valor para o strToken argumento. The NULL strToken argument causes strtok to search for the next token in the modified strToken.The strDelimit argumento pode levar a qualquer valor de uma telefonar para o próximo, de modo que o conjunto de delimitadores pode variar.

O valor de saída é afetado pela configuração do LC_CTYPE categoria de configuração da localidade; consulte setlocale para obter mais informações.As versões dessas funções sem o _l sufixo use a localidade corrente para esse comportamento dependente de localidade; as versões com o _l sufixo são idênticas exceto que usarem o parâmetro de localidade passado em vez disso. For more information, see Localidade.

Observação:

Cada função usa uma variável estática do local de segmento para p arsing a seqüência de caracteres em símbolos.Portanto, vários threads podem chamar simultaneamente Essas funções sem efeitos indesejáveis.No entanto, em um único thread, intercalação chamadas para uma dessas funções é provável que produzir dados cnstate altamente uption e resultados imprecisos.Ao analisar seqüências de caracteres diferentes, terminar de analisar uma cadeia de caracteres befo Re começar a analisar o próximo.Além disso, esteja ciente do potencial de perigo ao chamar uma dessas funções de dentro de um loop em que outra função é chamado.I f Outros função acaba usando uma dessas funções , uma sequência de chamadas intercalada resultará, acionando a corrupção de dados.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_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 obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

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
   }
}

Tokens:  A  string  of  tokens  and  some  more  tokens

Equivalente do NET Framework

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

Consulte também

Referência

Manipulação de seqüência de caracteres (CRT)

Localidade

Interpretação de seqüências de caractere multibyte

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l