Compartir a través de


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Busca el siguiente token en una cadena, con la configuración regional actual o con la configuración regional que se pase. Estas versiones de strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l tienen mejoras de seguridad, como se describe en Características de seguridad de CRT.

Nota importanteImportante

_mbstok_s y _mbstok_s_l no se pueden usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución.Para obtener más información, vea Funciones de CRT no admitidas 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 tokens.

  • strDelimit
    Juego de caracteres delimitadores.

  • context
    Se usa para almacenar información de posición entre llamadas a strtok_s

  • locale
    Configuración regional que se va a usar.

Valor devuelto

Devuelve un puntero al siguiente token que se encuentra en strToken. Devuelven NULL cuando no se encuentran más tokens. Cada llamada modifica strToken sustituyendo un carácter NULL por 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 de contexto válido, no se produce error.

Comentarios

La función strtok_s busca el siguiente token en strToken. El juego de caracteres de strDelimit especifica los delimitadores posibles del token que se van a buscar en strToken en la llamada actual. wcstok_s y _mbstok_sson versiones de caracteres anchos y multibyte de strtok_s. Los argumentos y valores devueltos de wcstok_s y _wcstok_s_l son cadenas de caracteres anchos; los de _mbstok_s y _mbstok_s_l son cadenas de caracteres multibyte. Estas tres funciones se comportan exactamente igual.

Esta función valida sus parámetros. Si se produce una condición de error, como se describe en la tabla de condiciones de error, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven NULL.

Asignaciones de rutina de texto genérico

Rutina 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 iniciales y devuelve un puntero al primer token de strToken, y finaliza el token con un carácter nulo. Del resto de strToken se pueden extraer más tokens mediante una serie de llamadas a strtok_s. Cada llamada a strtok_s modifica strToken insertando un carácter nulo después del token devuelto por la llamada. El puntero a context realiza el seguimiento de la cadena que se está leyendo y dónde en la cadena se debe leer el token siguiente. Para leer el token siguiente de strToken, llame a strtok_s con un valor NULL para el argumento de strToken, y pase el mismo parámetro context. El argumento NULL de strToken hace que strtok_s busque el token siguiente en el parámetro strToken modificado. El argumento strDelimit acepta cualquier valor de una llamada a la siguiente, por lo que el juego de delimitadores puede variar.

Puesto que el parámetro context reemplaza los búferes estáticos que se usan 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 LC_CTYPE de la configuración regional; vea setlocale para obtener más información. Las versiones de estas funciones sin el sufijo _l usan la configuración regional actual de su comportamiento dependiente de la configuración regional; las versiones con el sufijo _l son idénticas salvo que usan 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 más información sobre compatibilidad, vea Compatibilidad.

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, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Vea también

Referencia

Manipulación de cadenas (CRT)

Configuración regional

Interpretación de secuencias de caracteres de varios bytes

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l