strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l
Localizar o próximo token em uma seqüência de caracteres, usando a localidade corrente ou uma localidade passado.Essas são sistema autônomo versões de strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l com aprimoramentos de segurança conforme descrito em Aprimoramentos de segurança no CRT.
char *strtok_s(
char *strToken,
const char *strDelimit,
char **context
);
char *_strtok_s_l(
char *strToken,
const char *strDelimit,
char **context,
_locale_t locale
);
wchar_t *wcstok_s(
wchar_t *strToken,
const wchar_t *strDelimit,
wchar_t **context
);
wchar_t *_wcstok_s_l(
wchar_t *strToken,
const wchar_t *strDelimit,
wchar_t **context,
_locale_t locale
);
unsigned char *_mbstok_s(
unsigned char*strToken,
const unsigned char *strDelimit,
char **context
);
unsigned char *_mbstok_s(
unsigned char*strToken,
const unsigned char *strDelimit,
char **context,
_locale_t locale
);
Parâmetros
strToken
Seqüência que contém o símbolo ou símbolos.strDelimit
Conjunto de caracteres de delimitador.context
Usado para armazenar informações de posição entre chamadas de strtok_slocale
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.
Condições de erro
strToken |
strDelimit |
context |
Valor de Retorno |
errno |
---|---|---|---|---|
NULL |
any |
ponteiro para um ponteiro nulo |
NULL |
EINVAL |
any |
NULL |
any |
NULL |
EINVAL |
any |
any |
NULL |
NULL |
EINVAL |
If strToken é NULL mas o contexto é um ponteiro para um ponteiro de contexto válido, houver nenhum erro.
Comentários
The strtok_s 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_s and _mbstok_sare wide-character and multibyte-character versions of strtok_s.Os argumentos e valores de retorno de wcstok_s e _wcstok_s_l são caractere largos strings; as de _mbstok_s e _mbstok_s_l são seqüências de caractere de multibyte. Especifique estas três funções identicamente outro comportam.
Esta função valida os parâmetros.Se ocorrer uma condição de erro, sistema autônomo na tabela de condições de erro, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções conjunto errno para EINVAL e retornar NULL.
Mapeamentos de rotina de texto genérica
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcstok_s |
strtok_s |
_mbstok_s |
wcstok_s |
_tcstok_s_l |
_strtok_s_l |
_mbstok_s_l |
_wcstok_s_l |
Na primeira telefonar strtok_s 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_s. Cada telefonar para strtok_s modifica strToken inserindo um caractere nulo após o token retornado pela telefonar. The context mantém o controle do ponteiro qual seqüência de caracteres está sendo lido e onde o próximo token na seqüência de caracteres é para ser lido. Para ler o próximo token de strToken, ligue para strtok_s com um NULL valor para o strToken argumento e passar a mesma context parâmetro. The NULL strToken argument causes strtok_s 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.
Desde o context parâmetro substitui os buffers estático usados em strtok e _strtok_l, é possível analisar cadeias de caracteres de dois simultaneamente no mesmo segmento.
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.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strtok_s |
<string.h> |
_strtok_s_l |
<string.h> |
wcstok_s, _wcstok_s_l |
<string.h> ou <wchar.h> |
_mbstok_s, _mbstok_s_l |
<mbstring.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
Exemplo
// crt_strtok_s.c
// In this program, a loop uses strtok_s
// to print all the tokens (separated by commas
// or blanks) in two strings at the same time.
//
#include <string.h>
#include <stdio.h>
char string1[] =
"A string\tof ,,tokens\nand some more tokens";
char string2[] =
"Another string\n\tparsed at the same time.";
char seps[] = " ,\t\n";
char *token1 = NULL;
char *token2 = NULL;
char *next_token1 = NULL;
char *next_token2 = NULL;
int main( void )
{
printf( "Tokens:\n" );
// Establish string and get the first token:
token1 = strtok_s( string1, seps, &next_token1);
token2 = strtok_s ( string2, seps, &next_token2);
// While there are tokens in "string1" or "string2"
while ((token1 != NULL) || (token2 != NULL))
{
// Get next token:
if (token1 != NULL)
{
printf( " %s\n", token1 );
token1 = strtok_s( NULL, seps, &next_token1);
}
if (token2 != NULL)
{
printf(" %s\n", token2 );
token2 = strtok_s (NULL, seps, &next_token2);
}
}
}
Tokens: A Another string string of parsed tokens at and the some same more time. 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)
Interpretação de seqüências de caractere multibyte