strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

 

Veröffentlicht: Juli 2016

Die neueste Dokumentation zu Visual Studio 2017 finden Sie unter Dokumentation zu Visual Studio 2017.

Sucht das nächste Token in einer Zeichenfolge unter Verwendung des angegebenen Gebietsschemas oder eines Gebietsschemas, das übergeben wird. Sicherere Versionen dieser Funktionen sind verfügbar. finden Sie unter Strtok_s, _strtok_s_l, Wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

System_CAPS_ICON_important.jpg Wichtig

_mbstok und _mbstok_l können nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie unter In /ZW nicht unterstützte CRT-Funktionen.

char *strtok(  
   char *strToken,  
   const char *strDelimit   
);  
wchar_t *wcstok(  
   wchar_t *strToken,  
   const wchar_t *strDelimit   
);  
unsigned char *_mbstok(  
   unsigned char*strToken,  
   const unsigned char *strDelimit   
);  
unsigned char *_mbstok(  
   unsigned char*strToken,  
   const unsigned char *strDelimit,  
   _locale_t locale  
);  

Parameter

strToken
Zeichenfolge, die mindestens ein Token enthält.

strDelimit
Gruppe von Trennzeichen.

locale
Zu verwendendes Gebietsschema.

Gibt einen Zeiger auf das nächste Token zurück, das in strToken gefunden wird. Wenn keine weiteren Token gefunden werden, wird NULL zurückgegeben. Jeder Aufruf ändert strToken, indem er das Trennzeichen, das nach dem zurückgegebenen Token auftritt, durch ein NULL-Zeichen ersetzt.

Die strtok-Funktion sucht das nächste Token in strToken. Der Satz von Zeichen in strDelimit gibt mögliche Trennzeichen des in strToken gefunden Tokens für den aktuellen Aufruf an. wcstok und _mbstok sind Breitzeichen- und Multibytezeichenversionen von strtok. Die Argumente und der Rückgabewert von wcstok sind Breitzeichen-Zeichenfolgen; die von _mbstok sind Mehrbyte-Zeichenfolgen. Diese drei Funktionen verhalten sich andernfalls identisch.

System_CAPS_ICON_important.jpg Wichtig

Diese Funktionen stellen eine mögliche Bedrohung aufgrund eines Pufferüberlaufproblems dar. Pufferüberlaufprobleme werden häufig bei Systemangriffen eingesetzt, da sie zu einer unbefugten Ausweitung der Berechtigungen führen. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

Beim ersten Aufruf von strtok überspringt die Funktion vorangestellte Trennzeichen, gibt einen Zeiger auf das erste Token in strToken zurück und beendet das Token mit einem NULL-Zeichen. Vom restlichen strToken können weitere Token durch mehrere Aufrufe von strtok geholt werden. Jeder Aufruf von strtokändert strToken durch ein Null-Zeichen nach dem Einfügen der token zurückgegebenen. Um das folgende Token von strToken zu lesen, rufen Sie strtok auf, und geben Sie dabei einen NULL-Wert für das strToken-Argument an. Die NULL strToken -Argument bewirkt, dass strtok , suchen Sie nach dem nächsten Token im geänderten strToken. Das strDelimit-Argument kann zwischen zwei Aufrufen jeden beliebigen Wert annehmen, damit der Satz von Trennzeichen variieren kann.

Der Ausgabewert wird durch die Einstellung beeinflusst die LC_CTYPE -kategorieneinstellung des Gebietsschemas, siehe Setlocale Weitere Informationen. Die Versionen dieser Funktionen ohne das _l-Suffix verwenden das aktuelle Gebietsschema für dieses vom Gebietsschema abhängige Verhalten; die Versionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch stattdessen den ihnen übergebenen Gebietsschemaparameter. Weitere Informationen finden Sie unter Locale.

System_CAPS_ICON_note.jpg Hinweis

Jede Funktion verwendet eine statische Variable eines lokalen Threads, um die Zeichenfolge in Token zu analysieren. Daher können mehrere Threads diese Funktionen gleichzeitig aufrufen, ohne dass unerwünschte Auswirkungen auftreten. Innerhalb eines einzelnen Threads ist es jedoch wahrscheinlich, dass ein überlappendes Aufrufen von einer dieser Funktionen zu Datenbeschädigung und ungenauen Ergebnissen führt. Beim Analysieren verschiedener Zeichenfolgen sollte zuerst eine Zeichenfolge zu Ende analysiert werden, bevor mit dem Analysieren der nächsten Zeichenfolge begonnen wird. Berücksichtigen Sie auch das mögliche Risiko, wenn Sie eine dieser Funktionen aus einer Schleife heraus aufrufen, in der eine andere Funktion aufgerufen wird. Wenn die andere Funktion eine dieser Funktionen verwendet, kommt es zu einer überlappenden Sequenz von Aufrufen und Datenbeschädigung ist die Folge.

Zuordnung generischer Textroutinen

TCHAR.H-Routine_UNICODE und _MBCS nicht definiert._MBCS definiert_UNICODE definiert
_tcstokstrtok_mbstokwcstok
_tcstok_strtok_l_mbstok_l_wcstok_l
RoutineErforderlicher Header
strtok<string.h>
wcstok<string.h> oder <wchar.h>
_mbstok, _mbstok_l<mbstring.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

// crt_strtok.c  
// compile with: /W3  
// In this program, a loop uses strtok  
// to print all the tokens (separated by commas  
// or blanks) in the string named "string".  
//  
#include <string.h>  
#include <stdio.h>  
  
char string[] = "A string\tof ,,tokens\nand some  more tokens";  
char seps[]   = " ,\t\n";  
char *token;  
  
int main( void )  
{  
   printf( "Tokens:\n" );  
  
   // Establish string and get the first token:  
   token = strtok( string, seps ); // C4996  
   // Note: strtok is deprecated; consider using strtok_s instead  
   while( token != NULL )  
   {  
      // While there are tokens in "string"  
      printf( " %s\n", token );  
  
      // Get next token:   
      token = strtok( NULL, seps ); // C4996  
   }  
}  

Tokens:  
 A  
 string  
 of  
 tokens  
 and  
 some  
 more  
 tokens  

Nicht zutreffend. Mit PInvokerufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Zeichenfolgenbearbeitung
Gebietsschema
Interpretation von Multibyte-Zeichenfolgen
Strcspn, Wcscspn, _mbscspn, _mbscspn_l
Strspn, Wcsspn, _mbsspn, _mbsspn_l

Anzeigen: