Partilhar via


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_s

  • 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.

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)

Localidade

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

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l