Condividi tramite


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Individuare il token seguente in una stringa, utilizzando l'impostazione locale corrente o un'impostazione locale passata.Queste sono versioni di strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

Nota importanteImportante

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

Parametri

  • strToken
    Stringa contenente token o token.

  • strDelimit
    Set di caratteri di delimitazione.

  • context
    Utilizzato per archiviare informazioni sul percorso tra le chiamate a strtok_s

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

Condizioni di errore

strToken

strDelimit

context

Valore restituito

errno

NULL

any

puntatore a un puntatore null

NULL

EINVAL

any

NULL

any

NULL

EINVAL

any

any

NULL

NULL

EINVAL

Se strToken è NULL ma il contesto è un puntatore a un puntatore valido di contesto, non esiste alcun errore.

Note

La funzione di strtok_s 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_s e _mbstok_sdisponibili versioni a caratteri estesi e di caratteri multibyte di strtok_s.Gli argomenti e i valori restituiti di wcstok_s e _wcstok_s_l sono stringhe di caratteri estesi, tali di _mbstok_s e _mbstok_s_l sono stringhe di caratteri multibyte.Altrimenti queste tre funzioni si comportano in modo identico.

Questa funzione convalida i parametri.Se una condizione di errore si verifica, come nella tabella di condizioni di errore, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione può continuare, queste funzioni impostano errno a EINVAL e restituiscono NULL.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcstok_s

strtok_s

_mbstok_s

wcstok_s

_tcstok_s_l

_strtok_s_l

_mbstok_s_l

_wcstok_s_l

La prima chiamata a strtok_s 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_s.Ogni chiamata a strtok_s modifica strToken inserendo un carattere null dopo il token restituito dalla chiamata.Il puntatore di context tiene traccia della stringa è leggenda e in cui nella stringa il token seguente deve essere letto.Per leggere il token seguito da strToken, chiamare strtok_s con un valore di NULL per l'argomento di strToken e passare lo stesso parametro di context.L'argomento di NULLstrToken modo strtok_s 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.

Poiché il parametro di context sostituisce i buffer statici utilizzati in strtok e in _strtok_l, è possibile analizzare contemporaneamente due stringhe nello stesso thread.

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.

Requisiti

Routine

Intestazione obbligatoria

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>

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

Esempio

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