strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Znajduje następny token w ciągu, przy użyciu bieżących ustawień regionalnych lub określone ustawienia regionalne, który jest przekazywana.Bardziej bezpieczne wersje tych funkcji są dostępne w strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

Ważna uwagaWażne

_mbstok i _mbstok_l nie można używać w aplikacjach korzystających ze środowiska wykonawczego systemu Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /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
);

Parametry

  • strToken
    Ciąg zawierający tokenu lub tokenów.

  • strDelimit
    Zestaw znaków ogranicznika.

  • locale
    Ustawienia regionalne do użycia.

Wartość zwracana

Zwraca wskaźnik do następnego tokenu znalezione w strToken.Zwracały NULL kiedy znaleziono nie więcej tokeny.Każde wywołanie modyfikuje strToken przez podstawianie NULL znak dla pierwszego ogranicznika występujący po zwróconych tokenu.

Uwagi

strtok Funkcja znajduje następny token w strToken.Zestaw znaków w strDelimit określa możliwe ograniczników token znajdują się w strToken na bieżącej rozmowy.wcstok i _mbstok są wersjami znaków dwubajtowych i znaków wielobajtowych strtok.Argumenty i wartość zwracana przez wcstok są ciągami szerokich znaków; te z _mbstok są ciągami znaków wielobajtowych.Te trzy funkcje w innych wypadkach zachowują się identycznie.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Te funkcje spowodować potencjalne zagrożenie spowodowane przez problem przepełnienie buforu.Problemy z przepełnieniem buforu są częstą metodą ataku systemu, powodując nieuzasadnione podniesienie poziomu uprawnień.Aby uzyskać więcej informacji, zobacz unikanie przekroczenia buforu.

Na pierwsze wywołanie funkcji strtok, funkcja pomija wiodących ograniczników i zwraca wskaźnik do pierwszego tokenu w strToken, kończące token znakiem null.Więcej tokeny można podzielić z pozostałą część strToken przez szereg wywołań strtok.Każde wywołanie strtok modyfikuje strToken wstawiając znak null po token zwrócone przez tego wywołania.Aby przeczytać Następny token z strToken, call strtok z NULL wartość dla strToken argument.NULLstrToken Powoduje, że argument strtok aby wyszukać następny token w zmodyfikowanej strToken. strDelimit Argument może przyjmować dowolne wartości z jednego połączenia do następnego, tak, aby zestaw ograniczników mogą się różnić.

Wartość wyjściowa jest zależna od konfiguracji ustawień kategorii LC_CTYPE ustawień regionalnych; zobacz setlocale, aby uzyskać więcej informacji.Wersje tych funkcji, które nie mają przyrostka _l używają bieżących ustawień regionalnych dla wszelkich zachowań zależnych od ustawień lokalnych; wersje, które mają przyrostek _l są identyczne, z tą różnicą, że w zamian korzystają z przekazanego parametru ustawień regionalnych.Aby uzyskać więcej informacji, zobacz Regionalne.

[!UWAGA]

Każda funkcja używa zmiennej statycznej lokalnej wątku dla podczas analizowania ciągu w tokenach.W związku z tym wiele wątków jednocześnie może wywołać tych funkcji bez niepożądanych skutków.Jednak w jednym wątku, z przeplotem wywołania jednej z tych funkcji jest wysoce może powodować uszkodzenie danych lub niedokładne wyniki.Podczas analizowania różnych ciągów, Zakończ podczas analizowania jednego ciągu przed rozpoczęciem następnego przeanalizować.Ponadto być świadomi potencjalne zagrożenie podczas wywoływania jednej z tych funkcji od wewnątrz pętli, gdzie nosi nazwę innej funkcji.Inne funkcje kończy się za pomocą jednej z tych funkcji, przeplotem sekwencję wywołań spowoduje, wyzwalając uszkodzenie danych.

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tcstok

strtok

_mbstok

wcstok

_tcstok

_strtok_l

_mbstok_l

_wcstok_l

Wymagania

Procedura

Wymagany nagłówek

strtok

<Ciąg>

wcstok

<ciągo.h> lub <wchar.h>

_mbstok, _mbstok_l

<mbCiąg.h>

Dodatkowe informacje o zgodności – zobacz: Zgodność.

Przykład

// 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
   }
}
  

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

Regionalne

Interpretacja wielobajtowych sekwencji znaków

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l