strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l
Najděte další token řetězce pomocí aktuální národní prostředí nebo národní prostředí předána.Jedná se o verze strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l s vylepšení zabezpečení, jak je popsáno v Funkce zabezpečení v CRT.
![]() |
---|
_mbstok_sa _mbstok_s_l nelze použít v aplikacích, které jsou spuštěny v systému 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 znaků oddělovače.context
Slouží k ukládání informací o pozici mezi volánístrtok_slocale
Chcete-li národní prostředí pro použití.
Vrácená hodnota
Vrací ukazatel na další token, který v strToken.Vracejí NULL Pokud jsou nalezeny žádné další tokeny.Každé volání upravuje strToken nahrazením NULL znak pro první oddělovač, ke kterému dochází po výsledný token.
Chybové stavy
strToken |
strDelimit |
context |
Vrácená hodnota |
errno |
---|---|---|---|---|
NULL |
všechny |
ukazatel na ukazatel s hodnotou null |
NULL |
EINVAL |
všechny |
NULL |
všechny |
NULL |
EINVAL |
všechny |
všechny |
NULL |
NULL |
EINVAL |
Pokud strToken je NULL , ale kontext je ukazatel na ukazatel platný kontext, není žádná chyba.
Poznámky
strtok_s Funkce vyhledá další token, který v strToken.Sada znaků v strDelimit Určuje možné oddělovače token lze nalézt v strToken na aktuální volání.wcstok_sa _mbstok_s jsou verze širokého znaku a vícebajtové znakové sady strtok_s.Argumenty a vrácené hodnoty wcstok_s a _wcstok_s_l jsou řetězci širokého znaku; u _mbstok_s a _mbstok_s_l jsou vícebajtové znakové řetězce.Tyto tři funkce chovat identicky jinak.
Tato funkce ověřuje jeho parametry.Pokud dojde k chybového stavu, jak je uvedeno v tabulce chybových stavů je vyvolána obslužná rutina neplatný parametr, jak je popsáno v Ověření parametrů.Pokud je povoleno zpracování, chcete-li pokračovat, tyto funkce set errno na EINVAL a vrátit se NULL.
Mapování rutiny obecného textu
TCHAR.Byla zahájena rutina h |
_UNICODE & _MBCS není definováno |
_MBCS, definice |
_UNICODE definována |
---|---|---|---|
_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í strtok_s funkce vynechá úvodní oddělovače a vrací ukazatel na prvním tokenem v položce strToken, ukončení token znakem null.Další tokeny lze rozdělit ze zbytku strToken řadou volání strtok_s.Každé volání strtok_s upravuje strToken vložením znak null po token vrácené toto volání.context Ukazatel uchovává informace o řetězec, který se čte a další token v řetězci kde je ke čtení.Číst další token, který z strToken, volání strtok_s s NULL hodnotu strToken argument a předáte stejné context parametr.NULLstrToken Argument způsobí, že strtok_s Chcete-li vyhledat další token, který v upravenou strToken. strDelimit Argument může nabývat hodnot od jednoho volání na další, tak, aby sada oddělovačů se mohou lišit.
Protože context nahrazuje parametr statické vyrovnávacích pamětí, které jsou použity v strtok a _strtok_l, je možné analyzovat dva řetězce současně ve stejném podprocesu.
Výstupní hodnota je ovlivněna nastavením LC_CTYPE kategorie nastavení národního prostředí; Viz setlocale pro další informace.Verze těchto funkcí, aniž by _l příponu použít aktuální národní prostředí pro toto chování závislé na národním prostředí; verze s _l s tím rozdílem, že používají místo něho předán parametr locale shodná přípona.Další informace naleznete v tématu Národní prostředí.
Požadavky
Byla zahájena 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ě, viz Compatibility v úvodu.
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 Volání funkce standardním C pomocí PInvoke. Další informace naleznete v tématu Platformu vyvolání příklady.
Viz také
Referenční dokumentace
Výklad vícebajtové znakové sekvence