Condividi tramite


strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Individuare il token seguente in una stringa, utilizzando le impostazioni locali correnti o delle impostazioni locali specificate passate in.Più versioni sicure di queste funzioni sono disponibili, vedere strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

Nota importanteImportante

_mbstok e _mbstok_l non possono essere utilizzati nelle applicazioni eseguite nelle finestre runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate 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
);

Parametri

  • strToken
    Stringa contenente token o token.

  • strDelimit
    Set di caratteri di delimitazione.

  • locale
    Impostazioni locali da utilizzare.

Valore restituito

Restituisce un puntatore al token seguente trovato in strToken.Restituisce NULL quando non più token viene trovato.Ogni chiamata modifica strToken sostituendo un carattere di NULL per il primo delimitatore che si verifica dopo il token restituito.

Note

La funzione di strtok cerca il token seguente in strToken.Il set di caratteri in strDelimit specifica i delimitatori possibili del token da trovare in strToken sulla chiamata corrente.wcstok e _mbstok sono versioni a caratteri di tipo "wide" e di caratteri multibyte di strtok.Gli argomenti e il valore restituito di wcstok sono stringhe di caratteri di tipo "wide", quelli di _mbstok sono stringhe di caratteri multibyte.Altrimenti queste tre funzioni si comportano in modo identico.

Nota sulla sicurezzaNota sulla sicurezza

Queste funzioni comportano un rischio potenziale causato da un problema di sovraccarico del buffer.Problemi di sovraccarico del buffer sono un metodo frequente di attacco al sistema, con conseguente elevazione dei privilegi non autorizzata.Per ulteriori informazioni, vedere Evitare sovraccarichi del buffer.

La prima chiamata a strtok, la funzione ignora i delimitatori iniziali e restituisce un puntatore al primo token in strToken, terminando il token con un carattere null.Più token possono essere scoppiati il resto di strToken da una serie di chiamate a strtok.Ogni chiamata a strtokmodifica strToken inserendo un carattere null dopo token restituito dalla chiamata.Per leggere il token seguito da strToken, chiamare strtok con un valore di NULL per l'argomento di strToken.L'argomento di NULLstrToken modo strtok a trovare il token seguente in strTokenmodificato.L'argomento di strDelimit può utilizzare qualsiasi valore da una chiamata al seguente per consentire al set di delimitatori.

Il valore di output è interessato dall'impostazione dell'impostazione di categoria LC_CTYPE delle impostazioni locali; vedere setlocale per ulteriori informazioni.Le versioni di queste funzioni senza il suffisso _l utilizzano le impostazioni locali correnti per il comportamento dipendente dalle impostazioni locali; le versioni con il suffisso _l sono identiche, ad eccezione del fatto che utilizzano il parametro delle impostazioni locali che viene passato.Per ulteriori informazioni, vedere Impostazioni locali.

[!NOTA]

Ogni funzione utilizza una variabile statica di thread locale per analizzare la stringa in token.Pertanto, più thread possono chiamare simultaneamente queste funzioni senza effetti indesiderati.Tuttavia, in un unico thread, interfogliare chiamate a una di queste funzioni è molto probabile fornire il danneggiamento dei dati e i risultati imprecisi.Nell'analisi stringhe diverse di, che analizza una stringa prima di iniziare ad analizzare il seguente.Inoltre, ricordare di possibilità di un avviso quando viene chiamata una di queste funzioni dall'interno di un ciclo in cui un'altra funzione viene chiamata.Se un'altra funzione finisce con una di queste funzioni, una sequenza interfogliata di chiamate contrario, attivando il danneggiamento dei dati.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcstok

strtok

_mbstok

wcstok

_tcstok

_strtok_l

_mbstok_l

_wcstok_l

Requisiti

Routine

Intestazione obbligatoria

strtok

<string.h>

wcstok

<string.h> o <wchar.h>

_mbstok, _mbstok_l

<mbstring.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

// 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 .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Modifica delle stringhe (CRT)

Impostazioni locali

Interpretazione delle sequenze di caratteri multibyte

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l