Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Localiza o próximo token em uma cadeia de caracteres, usando a localidade atual ou uma localidade especificada que é passada. Estão disponíveis versões mais seguras destas funções; ver strtok_s, _strtok_s_l, wcstok_s, , _wcstok_s_l, _mbstok_s. _mbstok_s_l
Importante
_mbstok e _mbstok_l não pode ser usado em aplicativos executados no Tempo de Execução do Windows. Para obter mais informações, consulte Funções CRT não suportadas em aplicativos da Plataforma Universal do Windows.
Sintaxe
char *strtok(
char *strToken,
const char *strDelimit
);
char *_strtok_l(
char *strToken,
const char *strDelimit,
_locale_t locale
);
wchar_t *wcstok( /* Non-standard, define _CRT_NON_CONFORMING_WCSTOK to use */
wchar_t *strToken,
const wchar_t *strDelimit
);
wchar_t *wcstok(
wchar_t *strToken,
const wchar_t *strDelimit,
wchar_t **context
);
wchar_t *_wcstok_l(
wchar_t *strToken,
const wchar_t *strDelimit,
_locale_t locale
);
unsigned char *_mbstok(
unsigned char *strToken,
const unsigned char *strDelimit
);
unsigned char *_mbstok_l(
unsigned char *strToken,
const unsigned char *strDelimit,
_locale_t locale
);
Parâmetros
strToken
String contendo token ou tokens.
strDelimit
Conjunto de caracteres delimitadores.
locale
Localidade a ser usada.
context
Aponta para a memória usada para armazenar o estado interno do analisador para que o analisador possa continuar de onde parou na próxima vez que você ligar wcstok.
Valor de retorno
Retorna um ponteiro para o próximo token encontrado em strToken. As funções retornam NULL quando não são encontrados mais tokens. Cada chamada é strToken modificada substituindo um caractere nulo pelo primeiro delimitador que ocorre após o token retornado.
Observações
A strtok função localiza o próximo token em strToken. O conjunto de caracteres em strDelimit especifica possíveis delimitadores do token a ser encontrado na strToken chamada atual.
wcstok e _mbstok são versões de caracteres largos e multibytes do strtok. Os argumentos e o valor de retorno de são cadeias de wcstok caracteres largos. Os argumentos e o valor de retorno de são cadeias de caracteres de _mbstok multibyte. Estas três funções comportam-se de forma idêntica.
A versão de dois argumentos não wcstok é padrão. Se você precisar usar essa versão, precisará definir _CRT_NON_CONFORMING_WCSTOK antes de você #include <wchar.h> (ou #include <string.h>).
Importante
Essas funções incorrem em uma ameaça potencial causada por um problema de saturação de buffer. Problemas de saturação de buffer são um método frequente de ataque ao sistema, resultando em uma elevação injustificada de privilégio. Para obter mais informações, consulte Evitando saturações de buffer.
Na primeira chamada para strtok, a função ignora os delimitadores à esquerda e retorna um ponteiro para o primeiro token em strToken, encerrando o token com um caractere nulo. Mais tokens podem ser quebrados do restante por strToken uma série de chamadas para strtok. Cada chamada para strtok modifica strToken inserindo um caractere nulo após o token retornado por essa chamada. Para ler o próximo token de strToken, chame strtok com um NULL valor para o strToken argumento. O NULLstrToken argumento faz com que strtok procure o próximo token no .strToken O strDelimit argumento pode levar qualquer valor de uma chamada para a próxima para que o conjunto de delimitadores possa variar.
O valor de saída é afetado pela configuração da LC_CTYPE categoria da localidade. Para obter mais informações, consulte setlocale.
As versões dessas funções sem o sufixo _l usam a localidade atual para esse comportamento dependente da localidade. As versões com o sufixo _l são idênticas, exceto que usam o parâmetro locale passado em vez disso. Para obter mais informações, consulte Localidade.
Observação
Cada função usa uma variável estática thread-local para analisar a cadeia de caracteres em tokens. Portanto, vários threads podem chamar simultaneamente essas funções sem efeitos indesejáveis. No entanto, dentro de um único thread, a intercalação de chamadas para uma dessas funções é altamente provável de produzir corrupção de dados e resultados imprecisos. Ao analisar cadeias de caracteres diferentes, termine de analisar uma cadeia de caracteres antes de começar a analisar a próxima. Além disso, esteja ciente do potencial de perigo ao chamar uma dessas funções de dentro de um loop onde outra função é chamada. Se a outra função acabar usando uma dessas funções, uma sequência intercalada de chamadas resultará, desencadeando corrupção de dados.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.
Mapeamentos de rotina de texto genérico
TCHAR.H rotina |
_UNICODE e _MBCS não definido |
_MBCS definido |
_UNICODE definido |
|---|---|---|---|
_tcstok |
strtok |
_mbstok |
wcstok |
_tcstok |
_strtok_l |
_mbstok_l |
_wcstok_l |
Requerimentos
| Rotina | Cabeçalho obrigatório |
|---|---|
strtok |
<string.h> |
wcstok |
<string.h> ou <wchar.h> |
_wcstok_l |
<tchar.h> |
_mbstok, _mbstok_l |
<mbstring.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade.
Example
// 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
Consulte também
Manipulação de cadeias de caracteres
Locale
Interpretação de sequências de caracteres multibyte
strcspn, wcscspn, _mbscspn, _mbscspn_l
strspn, wcsspn, _mbsspn, _mbsspn_l