Udostępnij za pośrednictwem


strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Znajdź następny token w ciągu, przy użyciu bieżących ustawień regionalnych lub określone ustawienia regionalne, przekazany.Bezpieczniejsze wersje te funkcje są dostępne; see strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.

Ważna uwagaWażne

_mbstoki _mbstok_l nie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsł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 używane.

Wartość zwracana

Zwraca wskaźnik do Następny token znalezione w strToken.Zwracały NULL kiedy zostaną znalezione nie więcej tokenów.Każde wywołanie modyfikuje strToken przez podstawianie NULL znaków dla pierwszego ogranicznika występujący po zwrócony token.

Uwagi

strtok Funkcja znajduje następny token w strToken.Zestaw znaków w strDelimit określa możliwe ograniczników tokenu znajdują się w strToken na bieżącej rozmowy.wcstoki _mbstok szerokich znaków i znaków wielobajtowych wersje strtok.Argumenty i wartości zwracanej przez wcstok są ciągami szerokich znaków; tych z _mbstok są ciągami znaków wielobajtowych.Zmienia tych trzech funkcji zachowanie takich samych nazwach.

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

Funkcje te ponoszą potencjalne zagrożenie spowodowane przez problem przepełnienie buforu.Przepełnienie buforu problemy są używanej metody ataku system, skutkujących nieuzasadnione podniesienie uprawnień.Aby uzyskać więcej informacji, zobacz Unikanie przekroczeniem buforu.

Na pierwsze wezwanie do strtok, funkcja pomija ograniczników wiodącego i zwraca wskaźnik do pierwszego tokenu w strToken, kończące token znakiem null.Więcej tokenów można podzielić z pozostałą część strToken przez szereg połączeń w celu strtok.Każde wywołanie strtok modyfikuje strToken wstawiając znak null po token zwrócony przez to wywołanie.Odczytać następny token z strToken, call strtok z NULL wartość dla strToken argument.NULLstrToken Powoduje, że argument strtok Aby wyszukać następny token w zmodyfikowanego 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ść produkcji jest zależny od ustawienia z LC_CTYPE kategorii ustawienie regionalne tzn. zobacz setlocale Aby uzyskać więcej informacji.Wersje te funkcje, bez _l sufiks Użyj bieżących ustawień regionalnych tego zachowania zależne od ustawień lokalnych; wersje z _l sufiks są identyczne z tym, że używają zamiast przekazany parametr ustawień regionalnych.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

[!UWAGA]

Każda funkcja używa zmiennej statycznej lokalna dla wątku dla podczas analizowania ciągu w tokenach.W związku z tym wiele wątków jednocześnie może wywoływać te funkcje bez niepożądanych skutków.Jednak w jednym wątku, z przeplotem wywołań do jednego 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ć.Pamiętaj też, potencjału dla niebezpieczeństwa podczas wywoływania którejś z tych funkcji z w pętli, gdzie innej funkcji jest wywoływana.Jeśli inne funkcje kończy się za pomocą jednej z tych funkcji, przeplotem sekwencję wywołań spowoduje, wyzwalając uszkodzenie danych.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tcstok

strtok

_mbstok

wcstok

_tcstok

_strtok_l

_mbstok_l

_wcstok_l

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strtok

<string.h>

wcstok

<string.h> lub <wchar.h>

_mbstok, _mbstok_l

<mbstring.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

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ływać funkcji C standardowej, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

Ustawienia regionalne

Interpretacja sekwencje znaków wielobajtowych

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l