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, _mbstokhaben _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 Beliebig Zeiger auf einen NULL-Zeiger NULL EINVAL
Beliebig NULL Beliebig NULL EINVAL
Beliebig Beliebig 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, dass strtok_s im geänderten str nach dem nächsten Token sucht. 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_les 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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

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

Zeichenfolgenmanipulation
Gebietsschema
Interpretation von Multibyte-Zeichensequenzen
strcspn, wcscspn, _mbscspn, _mbscspn_l
strspn, wcsspn, _mbsspn, _mbsspn_l