strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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.

System_CAPS_ICON_important.jpg Importante

_mbstok_s y _mbstok_s_l no se pueden usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para 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.

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

strTokenstrDelimitcontextValor devueltoerrno
NULLcualquierapuntero a un puntero nuloNULLEINVAL
cualquieraNULLcualquieraNULLEINVAL
cualquieracualquieraNULLNULLEINVAL

Si strToken es NULL pero el contexto es un puntero a un puntero de contexto válido, no se produce error.

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_sy _mbstok_sson versiones de caracteres multibyte y anchos 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 muestra en la tabla de las condiciones de Error, se invoca el controlador de parámetros no válidos, como se describe en validación del parámetro. 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_sstrtok_s_mbstok_swcstok_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 NULL strToken argumento causas strtok_s para buscar el siguiente token en modificado strToken. 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 LC_CTYPE configuración de categoría 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 Locale.

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

// 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  

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.

Manipulación de cadenas
Configuración regional
Interpretación de secuencias de caracteres Multibyte
strcspn, wcscspn, _mbscspn, _mbscspn_l
strspn, wcsspn, _mbsspn, _mbsspn_l

Mostrar: