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.
Importante |
---|
_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 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
Interpretazione delle sequenze di caratteri multibyte