Aracılığıyla paylaş


strtok, _strtok_l, wcstok, , _wcstok_l, _mbstok, _mbstok_l

Geçerli yerel ayarı veya geçirilen belirtilen yerel ayarı kullanarak bir dizedeki sonraki belirteci bulur. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. strtok_s, _strtok_s_l, wcstok_s_wcstok_s_l, , _mbstok_s, _mbstok_s_l.

Önemli

_mbstokve _mbstok_l Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.

Sözdizimi

char *strtok(
   char *strToken,
   const char *strDelimit
);
char *_strtok_l(
   char *strToken,
   const char *strDelimit,
   _locale_t locale
);
wchar_t *wcstok( /* Non-standard, define _CRT_NON_CONFORMING_WCSTOK to use */
   wchar_t *strToken,
   const wchar_t *strDelimit
);
wchar_t *wcstok(
   wchar_t *strToken,
   const wchar_t *strDelimit,
   wchar_t **context
);
wchar_t *_wcstok_l(
   wchar_t *strToken,
   const wchar_t *strDelimit,
   _locale_t locale
);
unsigned char *_mbstok(
   unsigned char *strToken,
   const unsigned char *strDelimit
);
unsigned char *_mbstok_l(
   unsigned char *strToken,
   const unsigned char *strDelimit,
   _locale_t locale
);

Parametreler

strToken
Belirteç veya belirteç içeren dize.

strDelimit
Sınırlayıcı karakter kümesi.

locale
Kullanılacak yerel ayar.

context
Ayrıştırıcının bir sonraki çağrınızda wcstokkaldığı yerden devam edebilmesi için ayrıştırıcının iç durumunu depolamak için kullanılan belleğe işaret eder.

Dönüş değeri

içinde strTokenbulunan sonraki belirtecin işaretçisini döndürür. İşlevler, başka belirteç bulunamazsa geri döner NULL . Her çağrı, strToken döndürülen belirteç sonrasında gerçekleşen ilk sınırlayıcı için null bir karakter değiştirerek değişir.

Açıklamalar

strtok işlevi içinde strTokenbir sonraki belirteci bulur. içindeki strDelimit karakter kümesi, geçerli çağrıda strToken bulunabilecek belirtecin olası sınırlayıcılarını belirtir. wcstok ve _mbstok geniş karakterli ve çok baytlı sürümleridir strtok. bağımsız değişkenleri ve dönüş değeri wcstok geniş karakterli dizelerdir. argumets ve dönüş değeri _mbstok çok baytlı karakter dizeleridir. Bu üç işlev aynı şekilde davranır.

öğesinin wcstok iki bağımsız değişken sürümü standart değildir. Bu sürümü kullanmanız gerekiyorsa, önce (veya #include <string.h>) tanımlamanız _CRT_NON_CONFORMING_WCSTOK #include <wchar.h> gerekir.

Önemli

Bu işlevler, arabellek taşması sorununun getirdiği olası bir tehdit oluşturur. Arabellek taşması sorunları sık karşılaşılan bir sistem saldırısı yöntemidir ve bu da ayrıcalıkların gereksiz bir şekilde yükseltilmesine neden olur. Daha fazla bilgi için bkz . Arabellek taşmalarından kaçınma.

öğesine yapılan ilk çağrıda strtokişlev, baştaki sınırlayıcıları atlar ve içindeki strTokenilk belirtecin işaretçisini döndürerek belirteci null karakterle sonlar. öğesine yapılan bir dizi çağrı strtokile kalan strToken bölümünden daha fazla belirteç ayrılabilir. Her çağrısı, bu çağrı strtok tarafından döndürülenden token sonra null karakter ekleyerek değişirstrToken. 'den strTokensonraki belirteci okumak için bağımsız değişkeni için bir NULL değerle çağrısında strtok bulunurstrToken. bağımsız değişkeni, NULL strToken değiştirilen strTokeniçinde bir sonraki belirteci aramaya neden olurstrtok. Bağımsız strDelimit değişken, sınırlayıcı kümesinin değişebilmesi için bir çağrıdan sonrakine herhangi bir değeri alabilir.

Çıkış değeri, yerel ayarın LC_CTYPE kategori ayarının ayarından etkilenir. Daha fazla bilgi için bkz. setlocale.

Bu işlevlerin son eki olmayan _l sürümleri, bu yerel ayara bağımlı davranış için geçerli yerel ayarı kullanır. Son ekine _l sahip sürümler, bunun yerine geçirilen yerel ayar parametresini kullanmaları dışında aynıdır. Daha fazla bilgi için bkz . Yerel Ayar.

Not

Her işlev, dizeyi belirteçlere ayrıştırma için bir iş parçacığı yerel statik değişkeni kullanır. Bu nedenle, birden çok iş parçacığı istenmeyen efektler olmadan aynı anda bu işlevleri çağırabilir. Ancak, tek bir iş parçacığında, bu işlevlerden birine yapılan araya ekleme çağrılarının veri bozulması ve yanlış sonuçlar üretme olasılığı yüksektir. Farklı dizeleri ayrıştırırken, sonrakini ayrıştırmaya başlamadan önce bir dizeyi ayrıştırma işlemini tamamlayın. Ayrıca, başka bir işlevin çağrıldığı bir döngü içinden bu işlevlerden birini çağırırken tehlike olasılığına dikkat edin. Diğer işlev bu işlevlerden birini kullanıyorsa ara sıralı çağrılar sonucunda veri bozulması tetiklenir.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

TCHAR.H olağan _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_tcstok strtok _mbstok wcstok
_tcstok _strtok_l _mbstok_l _wcstok_l

Gereksinimler

Yordam Gerekli başlık
strtok <string.h>
wcstok <string.h> veya <wchar.h>
_wcstok_l <tchar.h>
_mbstok, _mbstok_l <mbstring.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

Ayrıca bkz.

Dize işleme
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması
strcspn, wcscspn, _mbscspn, _mbscspn_l
strspn, wcsspn, _mbsspn, _mbsspn_l