Udostępnij za pośrednictwem


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Znajduje następny token w ciągu, używając bieżących ustawień regionalnych lub przekazanych ustawień regionalnych.Te wersje strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l mają wzmocnienia zabezpieczeń, jak opisano w Funkcje zabezpieczeń w CRT.

Ważna uwagaWażne

_mbstok_s i _mbstok_s_l nie można używać w aplikacjach korzystających ze środowiska wykonawczego systemu Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /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
    Ciąg zawierający token lub tokeny.

  • strDelimit
    Zestaw znaków ogranicznika.

  • context
    Używany do przechowywania informacji o pozycji między wywołaniami strtok_s

  • locale
    Ustawienia regionalne do użycia.

Wartość zwracana

Zwraca wskaźnik do następnego tokenu znalezionego w strToken.Zwracają NULL, gdy nie znaleziono więcej tokenów.Każde wywołanie modyfikuje strToken przez podstawienie znaku NULL dla pierwszego ogranicznika występującego po zwróconym tokenie.

Warunki błędów

strToken

strDelimit

context

Wartość zwrócona

errno

NULL

jakakolwiek

wskaźnik do pustego wskaźnika

NULL

EINVAL

jakakolwiek

NULL

jakakolwiek

NULL

EINVAL

jakakolwiek

jakakolwiek

NULL

NULL

EINVAL

Jeśli strToken jest NULL, ale kontekst jest wskaźnikiem do prawidłowego wskaźnika kontekstu, błąd nie wystąpi.

Uwagi

Funkcja strtok_s znajduje następny token w strToken.Zestaw znaków w strDelimit określa możliwe ograniczniki tokenu do znalezienia w strToken w bieżącym wywołaniu.wcstok_s i _mbstok_sto wersja znaków dwubajtowych i wielobajtowych dla strtok_s.Argumenty i wartości zwracane przez wcstok_s i _wcstok_s_l są ciągami znaków dwubajtowych; zwracane przez _mbstok_s i _mbstok_s_l są ciągami znaków wielobajtowych.Te trzy funkcje w innych wypadkach zachowują się identycznie.

Ta funkcja sprawdza poprawność swoich parametrów.Jeśli wystąpi warunek błędu, jak w tabeli Warunki błędów, zostanie wywołany procedura obsługi nieprawidłowego parametru, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, te funkcje ustawiają errno jako EINVAL i zwracają NULL.

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tcstok_s

strtok_s

_mbstok_s

wcstok_s

_tcstok_s_l

_strtok_s_l

_mbstok_s_l

_wcstok_s_l

Przy pierwszym wywołaniu strtok_s, funkcja pomija wiodące ograniczniki i zwraca wskaźnik do pierwszego tokenu w strToken, kończąc token znakiem null.Więcej tokenów można podzielić z pozostałej części strToken przez szereg wywołań strtok_s.Każde wywołanie strtok_s modyfikuje strToken wstawiając znak null po tokenie zwróconym przez to wywołanie.Wskaźnik context przechowuje informacje o tym, który ciąg jest odczytywany i gdzie w ciągu znajduje się następny token do odczytania.Aby odczytać następny token z wywołania strToken, należy wywołać strtok_s z wartością NULL dla argumentu strToken i przekazać ten sam parametr context.Argument strToken o wartości NULL powoduje, że strtok_s szuka następnego tokenu w zmodyfikowanym strToken.Argument strDelimit może przyjąć dowolną wartość z jednego wywołania do drugiego, więc zestaw ograniczników może się różnić.

Ponieważ parametr context zastępuje bufory statyczne używane w strtok i _strtok_l, istnieje możliwość, aby przeanalizować dwa ciągi równocześnie w jednym wątku.

Wartość wyjściowa jest zależna od konfiguracji ustawień kategorii LC_CTYPE ustawień regionalnych; zobacz setlocale, aby uzyskać więcej informacji.Wersje tych funkcji, które nie mają przyrostka _l używają bieżących ustawień regionalnych dla wszelkich zachowań zależnych od ustawień lokalnych; wersje, które mają przyrostek _l są identyczne, z tą różnicą, że w zamian korzystają z przekazanego parametru ustawień regionalnych.Aby uzyskać więcej informacji, zobacz Regionalne.

Wymagania

Procedura

Wymagany nagłówek

strtok_s

<Ciąg>

_strtok_s_l

<Ciąg>

wcstok_s,

_wcstok_s_l

<ciągo.h> lub <wchar.h>

_mbstok_s,

_mbstok_s_l

<mbCiąg.h>

Dodatkowe informacje o zgodności – zobacz: Zgodność.

Przykład

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

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

Regionalne

Interpretacja wielobajtowych sekwencji znaków

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l