Udostępnij za pośrednictwem


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Znajdź następny token w ciągu, przy użyciu bieżących ustawień regionalnych lub ustawienia regionalne przekazany.Są to wersje strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l z ulepszeń zabezpieczeń, zgodnie z opisem w Funkcje zabezpieczeń w CRT.

Ważna uwagaWażne

_mbstok_si _mbstok_s_l nie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsł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 tokenu lub tokenów.

  • strDelimit
    Zestaw znaków ogranicznika.

  • context
    Używane do przechowywania informacji o pozycji między wywołaniamistrtok_s

  • locale
    Ustawienia regionalne używane.

Wartość zwracana

Zwraca wskaźnik do Następny token znalezione w strToken.Zwracały NULL kiedy zostaną znalezione nie więcej tokenów.Każde wywołanie modyfikuje strToken przez podstawianie NULL znaków dla pierwszego ogranicznika występujący po zwrócony token.

Warunki błędów

strToken

strDelimit

context

Zwracana wartość

errno

NULL

wszelkie

wskaźnik do pustego wskaźnika

NULL

EINVAL

wszelkie

NULL

wszelkie

NULL

EINVAL

wszelkie

wszelkie

NULL

NULL

EINVAL

Jeśli strToken jest NULL , ale kontekst jest wskaźnik do wskaźnika prawidłowego kontekstu, nie było błędu.

Uwagi

strtok_s Funkcja znajduje następny token w strToken.Zestaw znaków w strDelimit określa możliwe ograniczników tokenu znajdują się w strToken na bieżącej rozmowy.wcstok_si _mbstok_s szerokich znaków i znaków wielobajtowych wersje strtok_s.Argumenty i zwraca wartość wcstok_s i _wcstok_s_l są ciągami szerokich znaków; tych z _mbstok_s i _mbstok_s_l są ciągami znaków wielobajtowych.Zmienia tych trzech funkcji zachowanie takich samych nazwach.

Ta funkcja sprawdza poprawność jego parametry.Jeśli wystąpi błąd, jak w tabeli warunki wystąpienia błędu program obsługi nieprawidłowy parametr jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EINVAL i powrót NULL.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tcstok_s

strtok_s

_mbstok_s

wcstok_s

_tcstok_s_l

_strtok_s_l

_mbstok_s_l

_wcstok_s_l

Na pierwsze wezwanie do strtok_s funkcja pomija ograniczników wiodącego i zwraca wskaźnik do pierwszego tokenu w strToken, kończące token znakiem null.Więcej tokenów można podzielić z pozostałą część strToken przez szereg połączeń w celu strtok_s.Każde wywołanie strtok_s modyfikuje strToken , wstawiając znak null za tokenem zwrócony przez to wywołanie.context Wskaźnik informacje o właścicielu są odczytywane w ciągu których oraz gdzie w ciągu następnego token jest do odczytu.Odczytać następny token z strToken, call strtok_s z NULL wartość dla strToken argument i przekazać takie same context parametru.NULLstrToken Powoduje, że argument strtok_s Aby wyszukać następny token w zmodyfikowanego strToken. strDelimit Argument może przyjmować dowolne wartości z jednego połączenia do następnego, tak, aby zestaw ograniczników mogą się różnić.

Ponieważ context parametr zastępuje bufory statyczne, używane w strtok i _strtok_l, można rozdzielić dwa ciągi jednocześnie w tym samym wątku.

Wartość produkcji jest zależny od ustawienia z LC_CTYPE kategorii ustawienie regionalne tzn. zobacz setlocale Aby uzyskać więcej informacji.Wersje te funkcje, bez _l sufiks Użyj bieżących ustawień regionalnych tego zachowania zależne od ustawień lokalnych; wersje z _l sufiks są identyczne z tym, że używają zamiast przekazany parametr ustawień regionalnych.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strtok_s

<string.h>

_strtok_s_l

<string.h>

wcstok_s,

_wcstok_s_l

<string.h> lub <wchar.h>

_mbstok_s,

_mbstok_s_l

<mbstring.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

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ływać funkcji C standardowej, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

Ustawienia regionalne

Interpretacja sekwencje znaków wielobajtowych

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l