Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Znajduje następny token w ciągu przy użyciu bieżących ustawień regionalnych lub ustawień regionalnych, które są przekazywane. Te wersje programu strtok
, _strtok_l
, _wcstok_l
wcstok
, _mbstok
_mbstok_l
mają ulepszenia zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Ważne
_mbstok_s
nie można jej _mbstok_s_l
używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
char* strtok_s(
char* str,
const char* delimiters,
char** context
);
char* _strtok_s_l(
char* str,
const char* delimiters,
char** context,
_locale_t locale
);
wchar_t* wcstok_s(
wchar_t* str,
const wchar_t* delimiters,
wchar_t** context
);
wchar_t *_wcstok_s_l(
wchar_t* str,
const wchar_t* delimiters,
wchar_t** context,
_locale_t locale
);
unsigned char* _mbstok_s(
unsigned char* str,
const unsigned char* delimiters,
char** context
);
unsigned char* _mbstok_s_l(
unsigned char* str,
const unsigned char* delimiters,
char** context,
_locale_t locale
);
Parametry
str
Ciąg zawierający token lub tokeny do znalezienia.
delimiters
Zestaw znaków ograniczników do użycia.
context
Służy do przechowywania informacji o położeniu między wywołaniami funkcji.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zwraca wskaźnik do następnego tokenu znalezionego w str
pliku . Zwraca wartość NULL
, gdy nie znaleziono więcej tokenów. Każde wywołanie modyfikuje str
przez podstawianie znaku null dla pierwszego ogranicznika, który występuje po zwróconym tokenie.
Warunki błędu
str |
delimiters |
context |
Wartość zwracana | errno |
---|---|---|---|---|
NULL |
dowolny | wskaźnik do wskaźnika o wartości null | NULL |
EINVAL |
dowolny | NULL |
dowolny | NULL |
EINVAL |
dowolny | dowolny | NULL |
NULL |
EINVAL |
Jeśli str
jest NULL
to context
wskaźnik do prawidłowego wskaźnika kontekstu, nie ma błędu.
Uwagi
strtok_s
Rodzina funkcji znajduje następny token w pliku str
. Zestaw znaków w elemencie delimiters
określa możliwe ograniczniki tokenu do znalezienia w str
bieżącym wywołaniu. wcstok_s
i _mbstok_s
są wersjami znaków wielobajtowych i wielobajtowych .strtok_s
Argumenty i zwracane wartości wcstok_s
i _wcstok_s_l
są ciągami wieloznakowymi. Argumenty i zwracane wartości _mbstok_s
i _mbstok_s_l
są ciągami wielobajtowymi znaków. Te funkcje zachowują się identycznie inaczej.
Ta funkcja weryfikuje jego parametry. Jeśli wystąpi warunek błędu, tak jak w tabeli Warunki błędu, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, te funkcje są ustawione errno
na EINVAL
i zwracają wartość NULL
.
W pierwszym wywołaniu funkcji strtok_s
pomija wiodące ograniczniki i zwraca wskaźnik do pierwszego tokenu w str
elemecie , kończąc token z znakiem null. Więcej tokenów można podzielić na pozostałą str
część serii wywołań funkcji strtok_s
. Każde wywołanie do strtok_s
modyfikacji str
przez wstawienie znaku null po tokenie zwróconym przez to wywołanie. Wskaźnik context
śledzi, który ciąg jest odczytywany i gdzie w ciągu ma zostać odczytany następny token. Aby odczytać następny token z str
metody , wywołaj strtok_s
metodę z wartością NULL
argumentu str
i przekaż ten sam context
parametr. Argument NULL
str
powoduje strtok_s
wyszukanie następnego tokenu w zmodyfikowanym str
obiekcie . Argument delimiters
może przyjąć dowolną wartość z jednego wywołania do następnego, aby zestaw ograniczników mógł się różnić.
context
Ponieważ parametr zastępuje statyczne używane w systemach strtok
i _strtok_l
, można przeanalizować dwa ciągi jednocześnie w tym samym wątku.
Na wartość wyjściową ma wpływ ustawienie LC_CTYPE
ustawienia kategorii ustawień regionalnych. Aby uzyskać więcej informacji, zobacz setlocale
.
Wersje tych funkcji bez sufiksu _l
używają bieżących ustawień regionalnych wątku dla tego zachowania zależnego od ustawień regionalnych. Wersje z sufiksem _l
są identyczne, ale zamiast tego używają ustawień regionalnych określonych przez locale
parametr . Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcstok_s |
strtok_s |
_mbstok_s |
wcstok_s |
_tcstok_s_l |
_strtok_s_l |
_mbstok_s_l |
_wcstok_s_l |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
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ć więcej informacji 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);
}
}
}
Tokens:
A
Another
string
string
of
parsed
tokens
at
and
the
some
same
more
time.
tokens
Zobacz też
Manipulowanie ciągami
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
strcspn
, , wcscspn
, , _mbscspn
_mbscspn_l
strspn
, , wcsspn
, , _mbsspn
_mbsspn_l