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é |
---|
_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_slocale
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
Výklad sekvencí vícebajtových znaků