strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l
Suchen Sie das folgende Token in einer Zeichenfolge, unter Verwendung des aktuellen Gebietsschemas oder eines angegebenen Gebietsschemas, die übergeben werden.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.
Wichtig |
---|
_mbstok und _mbstok_l können in Anwendungen nicht verwendet werden, die in der Windows Runtime ausführen.Weitere Informationen finden Sie unter CRT-Funktionen unterstützt nicht mit /ZW. |
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 Token oder Token enthält.strDelimit
Satz Trennzeichen.locale
Zu verwendende Gebietsschema.
Rückgabewert
Gibt einen Zeiger auf folgenden Token zurück, das in strToken gefunden wird.Sie geben NULL zurück, wenn nicht mehr Token gefunden werden.Jeder Aufruf strToken ändert, indem er ein NULL Zeichen für das erste Trennzeichen ersetzt, das nach dem zurückgegebenen Token auftritt.
Hinweise
Die strtok-Funktion sucht das folgende Token in strToken.Der Satz von Zeichen in strDelimit gibt mögliche Trennzeichen des in an strToken auf dem aktuellen Aufruf gefunden werden Token.wcstok und _mbstok sind Breitzeich und Mehrbytezeichen-Versionen 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.
Sicherheitshinweis |
---|
Diese Funktionen verursachen eine potenzielle Bedrohung, die durch ein Pufferüberlaufprobleme hin bewerkstelligt wird.Pufferüberlaufprobleme sind eine häufige Methode des Systemangriffs, Ergebnis einer autorisierten Ausweitung seine Berechtigungen ausweitet.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen. |
Beim ersten Aufruf zu strtok, überspringt die Funktion führende Trennzeichen und gibt einen Zeiger auf das erste Token in strToken zurück und beendet das Token mit einem NULL-Zeichen.Weitere Token können vom Rest von strToken durch eine Reihe von Aufrufe strtok umgerechnet werden.Jeder Aufruf von strtok ändert strToken, indem er ein NULL-Zeichen nach token einfügt, das von diesem Aufruf zurückgegeben wird.Um das folgende Token von strToken zu lesen, rufen Sie strtok mit einem NULL-Wert für das Argument strToken auf.Das Argument NULLstrToken bewirkt, strtok für folgende Token in geänderten strToken zu suchen.Das strDelimit-Argument kann jeden Wert von einem Aufruf zum nächsten erstellen, damit der Satz von Trennzeichen variieren kann.
Der Ausgabewert wird durch die Einstellung der LC_CTYPE Kategorieneinstellung des Gebietsschemas betroffen; setlocale finden Sie weitere Informationen.Die Versionen dieser Funktionen ohne das _l Suffix verwenden das aktuelle Gebietsschema für dieses Verhalten abhängig; die Versionen mit dem _l Suffix sind identisch, allerdings verwenden den Gebietsschemaparameter, der in stattdessen übergeben wird.Weitere Informationen finden Sie unter Gebietsschema.
Hinweis |
---|
Jede Funktion verwendet eine threadlokale statische Variable zum Analysieren der Zeichenfolge in Token.Daher können mehrere Threads sie ohne unerwünschte Auswirkungen gleichzeitig aufrufen.jedoch in einem einzigen Thread, ist das Verschränken von Aufrufen bis eine dieser Funktionen in hohem Maße wahrscheinlich, Datenbeschädigung und ungenaue Ergebnisse zu erzeugen.Wenn verschiedene Zeichenfolgen, das Ende analysiert werden, das eine Zeichenfolge vor dem Starten, um Folgendes zu analysieren analysiert.Außerdem müssen Sie das Risiko für Gefahr, wenn Sie eine dieser Funktionen aus einer Schleife aufrufen, in der eine andere Funktion aufgerufen wird.Wenn die andere Funktion oben mit einer dieser Funktionen beendet, ergibt sich eine verschachtelte Sequenz von Aufrufen und startet Datenbeschädigung. |
Zuordnung generische Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert. |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcstok |
strtok |
_mbstok |
wcstok |
_tcstok |
_strtok_l |
_mbstok_l |
_wcstok_l |
Anforderungen
Routine |
Erforderlicher Header |
---|---|
strtok |
<string.h> |
wcstok |
<string.h> oder <wchar.h> |
_mbstok, _mbstok_l |
<mbstring.h> |
So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.
Beispiel
// 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
}
}
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufzurufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.
Siehe auch
Referenz
Zeichenfolgenbearbeitung (CRT)
Interpretation von Mehrbytezeichen-Sequenzen