strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Busque el símbolo siguiente en una cadena, con la configuración regional actual o una configuración regional pasó.Éstas son versiones de strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l con mejoras de seguridad como se describe en Características de seguridad en CRT.

Nota importanteImportante

_mbstok_s y _mbstok_s_l no se pueden utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows.Para obtener más información, vea Funciones CRT no compatibles con /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
    Cadena que contiene símbolos o tokens.

  • strDelimit
    Conjunto de caracteres delimitadores.

  • context
    Utilizado para almacenar información de posición entre las llamadas a strtok_s

  • locale
    Configuración regional a utilizar.

Valor devuelto

Devuelve un puntero al símbolo siguiente encontrado en strToken.Devuelven NULL cuando encuentran a no más de tokens.Cada llamada modifica strToken y un carácter de NULL para el primer delimitador que aparece después del token devuelto.

Condiciones de error

strToken

strDelimit

context

Valor devuelto

errno

NULL

any

puntero a un puntero nulo

NULL

EINVAL

any

NULL

any

NULL

EINVAL

any

any

NULL

NULL

EINVAL

Si strToken es NULL pero el contexto es un puntero a un puntero válido de contexto, ningún error.

Comentarios

La función de strtok_s busca el símbolo siguiente en strToken.El conjunto de caracteres en strDelimit especifica los delimitadores posibles de símbolos que se encontrará en strToken en la llamada actual.wcstok_s y _mbstok_s son versiones de caracteres anchos y de multibyte- carácter de strtok_s.Los argumentos y valores devueltos de wcstok_s y _wcstok_s_l son cadenas de caracteres; las de _mbstok_s y _mbstok_s_l son cadenas de multibyte- carácter.Estas tres funciones se comportan exactamente igual de otra manera.

Esta función valida sus parámetros.Si una condición de error, como en la tabla de las condiciones de error, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, este errno establecido funciones a EINVAL y a NULL return.

Asignaciones de la rutina de Genérico- texto

Rutina de TCHAR.H

_UNICODE y _MBCS no 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

En la primera llamada a strtok_s la función omite los delimitadores principales y devuelve un puntero al primer símbolo en strToken, finalizando el símbolo con un carácter nulo.Más tokens pueden ser vulnerables a su del resto de strToken por una serie de llamadas a strtok_s.Cada llamada a strtok_s modifica strToken inserta un carácter null después de símbolos devuelto por la llamada.El puntero de context seguimiento de se está leyendo qué cadena y dónde en la cadena que se debe leer el token siguiente.Para leer el token siguiente de strToken, llame a strtok_s con un valor de NULL para el argumento de strToken, y pase el mismo parámetro de context.El argumento de NULLstrToken produce strtok_s para buscar el símbolo siguiente en strToken modificado.El argumento de strDelimit puede contener cualquier valor de una llamada el siguiente para que el conjunto de delimitadores puede variar.

Puesto que el parámetro de context reemplaza los bufferes estáticos utilizados en strtok y _strtok_l, es posible analizar dos cadenas simultáneamente en el mismo subproceso.

El valor de salida se ve afectado por el valor de la categoría de LC_CTYPE de configuración regional; vea setlocale para obtener más información.Las versiones de estas funciones sin el sufijo de _l utilizan la configuración regional actual para este comportamiento configuración regional-dependiente; las versiones con el sufijo de _l son idénticas salvo que utilizan el parámetro locale pasado en su lugar.Para obtener más información, vea Configuración regional.

Requisitos

Rutina

Encabezado necesario

strtok_s

<string.h>

_strtok_s_l

<string.h>

wcstok_s,

_wcstok_s_l

<string.h> o <wchar.h>

_mbstok_s,

_mbstok_s_l

<mbstring.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

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

Equivalente en .NET Framework

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Vea también

Referencia

Manipulación de cadenas (CRT)

Configuración regional

Interpretación de secuencias de Multibyte- Carácter

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l