Sdílet prostřednictvím


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.

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

_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_s

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

Manipulaci s řetězci (CRT)

Národní prostředí

Výklad vícebajtové znakové sekvence

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l