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ż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_slocale
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
Interpretacja sekwencje znaków wielobajtowych