strtok_s
, , _strtok_s_l
wcstok_s
, _wcstok_s_l
, , _mbstok_s
_mbstok_s_l
Sucht das nächste Token in einer Zeichenfolge unter Verwendung des aktuellen Gebietsschemas oder eines Gebietsschemas, das übergeben wird. Diese Versionen von strtok
, , wcstok
_strtok_l
, _wcstok_l
, _mbstok
haben _mbstok_l
Sicherheitsverbesserungen, wie in den Sicherheitsfeatures in der CRT beschrieben.
Wichtig
_mbstok_s
und _mbstok_s_l
können nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
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
);
Parameter
str
Eine Zeichenfolge, die das zu findende Token oder Token enthält.
delimiters
Der Satz von Trennzeichen, die verwendet werden sollen.
context
Wird verwendet, um Positionsinformationen zwischen Aufrufen der Funktion zu speichern.
locale
Das zu verwendende Gebietsschema.
Rückgabewert
Gibt einen Zeiger auf das nächste Token zurück, das in str
gefunden wird. Gibt zurück NULL
, wenn keine weiteren Token gefunden werden. Jeder Aufruf ändert sich str
, indem ein NULL-Zeichen für das erste Trennzeichen ersetzt wird, das nach dem zurückgegebenen Token auftritt.
Fehlerbedingungen
str |
delimiters |
context |
Rückgabewert | errno |
---|---|---|---|---|
NULL |
any | Zeiger auf einen NULL-Zeiger | NULL |
EINVAL |
any | NULL |
Beliebig | NULL |
EINVAL |
Beliebig | any | NULL |
NULL |
EINVAL |
Wenn str
dies jedoch context
ein Zeiger auf einen gültigen Kontextzeiger istNULL
, gibt es keinen Fehler.
Hinweise
Die strtok_s
Funktionsfamilie findet das nächste Token in str
. Der Satz von Zeichen in delimiters
gibt mögliche Trennzeichen des in str
gefunden Tokens für den aktuellen Aufruf an. wcstok_s
und _mbstok_s
sind Breitzeichen- und Multibytezeichenversionen von strtok_s
. Die Argumente und Rückgabewerte von wcstok_s
und _wcstok_s_l
sind Zeichenfolgen mit breitem Zeichen. Die Argumente und Rückgabewerte von _mbstok_s
und _mbstok_s_l
sind Multibyte-Zeichenfolgen. Anderenfalls verhalten sich diese Funktionen identisch.
Diese Funktion überprüft ihre Parameter. Wenn eine Fehlerbedingung auftritt, wie in der Tabelle "Fehlerbedingungen" wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno
auf EINVAL
ein und geben NULL
zurück.
Beim ersten Aufruf von strtok_s
überspringt die Funktion vorangestellte Trennzeichen, gibt einen Zeiger auf das erste Token in str
zurück und beendet das Token mit einem NULL-Zeichen. Vom restlichen str
können weitere Token durch mehrere Aufrufe von strtok_s
geholt werden. Jeder Aufruf von strtok_s
ändert str
, indem er ein NULL-Zeichen nach dem zurückgegebenen Token einfügt. Der context
-Zeiger erfasst, aus welcher Zeichenfolge gelesen wird und an welcher Stelle in der Zeichenfolge das nächste Token gelesen werden soll. Um das nächste Token von str
zu lesen, rufen Sie strtok_s
mit einem NULL
-Wert für das str
-Argument auf, und übergeben Sie den gleichen context
-Parameter. Das NULL
str
Argument bewirkt strtok_s
, dass nach dem nächsten Token in der geänderten Datei gesucht wird str
. Das delimiters
-Argument kann zwischen zwei Aufrufen jeden beliebigen Wert annehmen, damit der Satz von Trennzeichen variieren kann.
Da der context
Parameter die statischen Puffer ersetzt, die in strtok
und, und _strtok_l
es ist möglich, zwei Zeichenfolgen gleichzeitig im selben Thread zu analysieren.
Der Ausgabewert wird durch die Einstellung der LC_CTYPE
Kategorieeinstellung des Gebietsschemas beeinflusst. Weitere Informationen finden Sie unter setlocale
.
Die Versionen dieser Funktionen ohne das _l
Suffix verwenden das aktuelle Threadgebietsschema für dieses gebietsschemaabhängige Verhalten. Die Versionen mit dem _l
Suffix sind identisch, außer sie verwenden stattdessen das vom locale
Parameter angegebene Gebietsschema. Weitere Informationen finden Sie unter Locale.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
TCHAR.H -Routine |
_UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcstok_s |
strtok_s |
_mbstok_s |
wcstok_s |
_tcstok_s_l |
_strtok_s_l |
_mbstok_s_l |
_wcstok_s_l |
Anforderungen
Routine | Erforderlicher Header |
---|---|
strtok_s |
<string.h> |
_strtok_s_l |
<string.h> |
wcstok_s ,_wcstok_s_l |
<string.h> oder <wchar.h> |
_mbstok_s ,_mbstok_s_l |
<mbstring.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Zeichenfolgenbearbeitung
Gebietsschema
Interpretation von Multibytezeichensequenzen
strcspn
, , wcscspn
_mbscspn
_mbscspn_l
strspn
, , wcsspn
_mbsspn
_mbsspn_l