Partilhar via


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Localizar o símbolo seguir em uma cadeia de caracteres, usando a localidade atual ou uma localidade passada em.Essas são versões de strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l com aprimoramentos de segurança conforme descrito em Recursos de segurança no CRT.

Observação importanteImportante

_mbstok_s e _mbstok_s_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_s( char *strToken, const char *strDelimit, char **context ); char *_strtok_s_l( char *strToken, const char *strDelimit, char **context, _locale_tlocale ); 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_tlocale ); 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_tlocale );

Parâmetros

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

  • strDelimit
    Conjunto de caracteres de delimitador.

  • context
    Usado para armazenar informações de posição entre chamadas a strtok_s

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

Condições de erro

strToken

strDelimit

context

Valor de Retorno

errno

NULL

alguns

ponteiro para um ponteiro zero

NULL

EINVAL

alguns

NULL

alguns

NULL

EINVAL

alguns

alguns

NULL

NULL

EINVAL

Se strToken é NULL mas o contexto é um ponteiro para um ponteiro válido de contexto, não há nenhum erro.

Comentários

A função de strtok_s 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_s e _mbstok_ssão versões de largo- caractere e o caractere multibyte- de strtok_s.Os argumentos e valores de retorno de wcstok_s e _wcstok_s_l são cadeias de caracteres de largo- caractere; essas de _mbstok_s e _mbstok_s_l são cadeias de caracteres de multibyte- caractere.Essas três funções se comportam de forma idêntica.

Essa função valida os seus parâmetros.Se uma condição de erro ocorre, como na tabela das condições de erro, o manipulador inválido do parâmetro é invocado, como descrito em Validação de parâmetro.Se a execução é permitida continuar, este errno definir funções a EINVAL e a NULLde retorno.

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _MBCS não definidos

_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 chamada a strtok_s 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_s.Cada chamada a strtok_s altera strToken inserindo um caractere nulo após o símbolo retornado pelo chamada.O ponteiro de context mantêm-se o controle que a cadeia de caracteres está sendo ler e onde cadeia de caracteres no símbolo seguir deve ser lido.Para ler o seguinte símbolo de strToken, chame strtok_s com um valor de NULL para o argumento de strToken , e passe o mesmo parâmetro de context .O argumento de NULLstrToken faz com que strtok_s 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.

Como o parâmetro de context substitui os buffers estáticos usados em strtok e em _strtok_l, é possível analisar simultaneamente duas cadeias de caracteres no mesmo segmento.

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.

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

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

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