strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Busque el símbolo siguiente en una cadena, con la configuración regional actual o una configuración regional especificada pasó.Versiones más seguras de estas funciones están disponibles; vea strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

Nota importanteImportante

_mbstok y _mbstok_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(
   char *strToken,
   const char *strDelimit 
);
wchar_t *wcstok(
   wchar_t *strToken,
   const wchar_t *strDelimit 
);
unsigned char *_mbstok(
   unsigned char*strToken,
   const unsigned char *strDelimit 
);
unsigned char *_mbstok(
   unsigned char*strToken,
   const unsigned char *strDelimit,
   _locale_t locale
);

Parámetros

  • strToken
    Cadena que contiene símbolos o tokens.

  • strDelimit
    Conjunto de caracteres delimitadores.

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

Comentarios

La función de strtok 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 y _mbstok son versiones de caracteres anchos y de multibyte- carácter de strtok.Los argumentos y el valor devuelto de wcstok son cadenas de caracteres; las de _mbstok son cadenas de multibyte- carácter.Estas tres funciones se comportan exactamente igual de otra manera.

Nota de seguridadNota sobre la seguridad

Estas funciones incurren en una amenaza potencial causada por un problema de saturación del búfer.Los problemas de saturación del búfer es un método frecuente de ataque del sistema, lo que da como resultado una elevación de privilegios injustificable.Para obtener más información, vea Para evitar las saturaciones del búfer.

En la primera llamada a strtok, 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.Cada llamada a strtok modifica strToken inserta un carácter null después de token devuelto por la llamada.Para leer el token siguiente de strToken, llame a strtok con un valor de NULL para el argumento de strToken.El argumento de NULLstrToken produce strtok 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.

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.

[!NOTA]

Cada función utiliza una variable estática de subproceso- local para analizar la cadena en tokens.Por consiguiente, varios subprocesos pueden llamar simultáneamente estas funciones sin efectos no deseados.Sin embargo, dentro de un único subproceso, intercalando llamadas a una de estas funciones es muy probable generar el daño en los datos y resultados inexactos.Al analizar diferentes cadenas, terminados de analizar una cadena antes de empezar a analizar el siguiente.Además, tenga en cuenta el potencial del riesgo al llamar a una de estas funciones dentro de un bucle donde se llama a otra función.Si otra función finaliza para anteriormente mediante una de estas funciones, una secuencia intercalada de llamadas resultará, desencadenar el daño en los datos.

Asignaciones de la rutina de Genérico- texto

Rutina de TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tcstok

strtok

_mbstok

wcstok

_tcstok

_strtok_l

_mbstok_l

_wcstok_l

Requisitos

Rutina

Encabezado necesario

strtok

<string.h>

wcstok

<string.h> o <wchar.h>

_mbstok, _mbstok_l

<mbstring.h>

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

Ejemplo

// crt_strtok.c
// compile with: /W3
// In this program, a loop uses strtok
// to print all the tokens (separated by commas
// or blanks) in the string named "string".
//
#include <string.h>
#include <stdio.h>

char string[] = "A string\tof ,,tokens\nand some  more tokens";
char seps[]   = " ,\t\n";
char *token;

int main( void )
{
   printf( "Tokens:\n" );
 
   // Establish string and get the first token:
   token = strtok( string, seps ); // C4996
   // Note: strtok is deprecated; consider using strtok_s instead
   while( token != NULL )
   {
      // While there are tokens in "string"
      printf( " %s\n", token );

      // Get next token: 
      token = strtok( NULL, seps ); // C4996
   }
}
  

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