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.
Importante |
---|
_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_slocale
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
Interpretación de secuencias de Multibyte- Carácter