Sdílet prostřednictvím


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Vyhledá další token v řetězci pomocí aktuálního národního prostředí nebo pomocí předaného národního prostředí.Tyto verze strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l mají rozšíření zabezpečení popsaná v tématu Funkce zabezpečení v CRT.

Důležitá poznámkaDůležité

_mbstok_s a _mbstok_s_l nelze použít v aplikacích, které jsou spouštěny v modulu Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /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 
);

Parametry

  • strToken
    Řetězec obsahující token nebo tokeny.

  • strDelimit
    Sada oddělovacích znaků.

  • context
    Slouží k ukládání informací o poloze mezi voláními funkce strtok_s

  • locale
    Použité národní prostředí.

Vrácená hodnota

Vrací ukazatel na další token v parametru strToken.Vrátí hodnotu NULL, pokud nejsou nalezeny žádné další tokeny.Každé volání upraví parametr strToken nahrazením znaku NULL prvního oddělovače, který se objeví po vráceném tokenu.

Chybové podmínky

strToken

strDelimit

context

Návratová hodnota

errno

NULL

any

ukazatel na ukazatel s hodnotou null

NULL

EINVAL

any

NULL

any

NULL

EINVAL

any

any

NULL

NULL

EINVAL

Pokud má parametr strToken hodnotu NULL, ale kontext je ukazatel na platný ukazatel kontextu, nenastane žádná chyba.

Poznámky

Funkce strtok_s vyhledá další token v parametru strToken.Množina znaků v parametru strDelimit určuje možné oddělovače tokenu, který má být nalezen v parametru strToken při aktuálním volání.Funkcewcstok_s a _mbstok_sjsou širokoznaké a vícebajtové verze funkce strtok_s.Argumenty a vrácené hodnoty funkcí wcstok_s a _wcstok_s_l jsou širokoznaké řetězce. Argumenty a vrácené hodnoty funkcí _mbstok_s a _mbstok_s_l jsou vícebajtové znakové řetězce.Tyto tři funkce se jinak chovají identicky.

Tato funkce ověřuje své parametry.Pokud dojde k chybě, jako v tabulce Chybové podmínky, je vyvolána obslužná rutina neplatného parametru, jak je popsáno v tématu Ověření parametru.Pokud smí provádění pokračovat, tyto funkce nastaví errno na EINVAL a vrátí NULL.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_tcstok_s

strtok_s

_mbstok_s

wcstok_s

_tcstok_s_l

_strtok_s_l

_mbstok_s_l

_wcstok_s_l

Při prvním volání funkce strtok_s tato funkce přeskočí úvodní oddělovače a vrátí ukazatel na první token v parametru strToken a ukončí token znakem null.Další tokeny lze zjistit ze zbytku parametru strToken řadou volání funkce strtok_s.Každé volání funkce strtok_s upraví parametr strToken vložením znaku null za token vrácený tímto voláním.Ukazatel context uchovává informace o tom, který řetězec se čte a kde je v tomto řetězci další token ke čtení.Chcete-li přečíst další token z parametru strToken zavolejte funkci strtok_s s hodnotou NULL argumentu strToken a předejte stejný parametr context.Hodnota NULL argumentu strToken způsobí, že funkce strtok_s vyhledá další token v upraveném parametru strToken.Argument strDelimit přijímá jakoukoli hodnotu z jednoho volání na další, takže se sada oddělovačů může lišit.

Protože parametr context nahrazuje statické vyrovnávací paměti používané funkcemi strtok a _strtok_l, je ve stejném podprocesu možné analyzovat dva řetězce současně.

Výstupní hodnota je ovlivněna nastavením kategorie LC_CTYPE národního prostředí; viz setlocale pro další informace.Verze těchto funkcí bez přípony _l používají aktuální národní prostředí pro toto chování závislé na národním prostředí. Verze s příponou _l jsou stejné s tím rozdílem, že používají předaný parametr národního prostředí.Další informace naleznete v tématu Národní prostředí.

Požadavky

Rutina

Požadované záhlaví

strtok_s

<string.h>

_strtok_s_l

<string.h>

wcstok_s,

_wcstok_s_l

<string.h> nebo <wchar.h>

_mbstok_s,

_mbstok_s_l

<mbstring.h>

Další informace o kompatibilitě naleznete v tématu Kompatibilita.

Příklad

// 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);
        }
    }
}
  

Ekvivalent v rozhraní .NET Framework

Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu Příklady vyvolání platformy.

Viz také

Referenční dokumentace

Zacházení s řetězci (CRT)

Národní prostředí

Výklad sekvencí vícebajtových znaků

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l