strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l

Sonraki belirteç geçerli yerel ayarı veya geçirilen bir belirtilen yerel ayar kullanarak bir dize içinde 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 notÖnemli

_mbstok ve _mbstok_l Windows Çalışma Zamanı'nda yürütülen uygulamalarda kullanılamazlar.Daha fazla bilgi için bkz /ZW ile desteklenmeyen CRT işlevleri.

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
);

Parametreler

  • strToken
    Belirteci veya belirteçleri içeren dize.

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

  • locale
    Kullanılacak yerel ayar.

Dönüş Değeri

Bulunan sonraki belirteç için işaretçi döndüren strToken.Döndürmeleri NULL yok daha fazla belirteçleri bulunduğunda.Her arama değiştirir strToken yerine göre bir NULL için verilen belirtecin sonra oluşan ilk sınırlayıcı karakter.

Notlar

strtok İşlev bulur sonraki belirteç strToken.Karakter kümesinde strDelimit içinde bulunan belirtecin olası sınırlayıcıları belirtir strToken geçerli arama.wcstok ve _mbstok, strtok öğesinin geniş karakter ve çok baytlı karakter sürümleridir.Bağımsız değişkenler ve wcstok dönüş değeri geniş karakterli dizelerdir; _mbstok dizeleri çok baytlı karakter dizeleridir.Bu üç işlev, aynı şekilde davranır.

Güvenlik NotuGüvenlik Notu

Bu işlevler, duruma göre bir arabellek taşması sorunu potansiyel bir tehlike tabi.Arabellek taşması sorunları, haksız ayrıcalık sistem saldırı, bir unwarranted ayrıcalık yükseltilmesi ile sonuçlanan sık kullanılan bir sistem saldırısı yöntemidir.Daha fazla bilgi için, bkz. Arabellek Taşmalarını Önleme.

İlk çağrı üzerinde strtok, işlevin başında sınırlayıcıları atlar ve ilk belirteci için bir işaretçi döndürür strToken, belirteç boş karakter ile sona eriyor.Daha fazla belirteçleri geri kalanı dışında bölünebilecek strToken bir dizi çağrı strtok.Her arama strtok değiştirir strToken sonra null karakteri ekleyerek token bu çağrı tarafından döndürülen.Sonraki simgesinden okunacak strToken, çağrı strtok ile bir NULL değerini strToken bağımsız değişkeni.NULLstrToken Bağımsız değişkeni neden strtok sonraki belirteç değiştirilmiş aramak için strToken. strDelimit Bağımsız değişkeni, bir sonraki çağrı arasında herhangi bir değer alabilir, böylece sınırlayıcı kümesi farklı olabilir.

Çıkış değeri, yerel ayarın LC_CTYPE kategori ayarından etkilenir; daha fazla bilgi için, bkz. setlocale.Bu işlevlerin, _l sonekine sahip olmayan sürümleri, yerel ayara bağlı davranışı için, geçerli yerel ayarı kullanır; _l sonekine sahip sürümler, bunun yerine iletilmiş yerel ayar parametresini kullanması hariç aynıdır.Daha fazla bilgi için bkz. Yerel Ayar.

[!NOT]

Her işlev, dize belirtece ayrıştırmadan için statik bir iş parçacığı yerel değişkeni kullanır.Bu nedenle, birden çok iş parçacığı aynı anda istenmeyen etkileri olmadan bu işlevler çağırabilirsiniz.Ancak, tek bir iş parçacığı içinde Bu işlevlerden birini çağrıları araya ekleme veri bozulması ve tutarsız sonuçlar üretmek oldukça yüksektir.Farklı dizeleri ayrıştırırken sonraki ayrıştırmak başlamadan önce bir dizgi ayrıştırmayı tamamlayın.Ayrıca, bu işlevlerin bir döngü içinde bir yere başka bir işlevi çağrılır çağırırken olası tehlike için dikkat edin.Bu işlevlerden birini kullanarak diğer işlevi sona eriyor, aramalar araya eklenmiş bir dizi, veri bozulması harekete neden olur.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_tcstok

strtok

_mbstok

wcstok

_tcstok

_strtok_l

_mbstok_l

_wcstok_l

Gereksinimler

Yordam

Gerekli başlık

strtok

<string.h>

wcstok

<string.h> or <wchar.h>

_mbstok, _mbstok_l

<mbstring.h>

Ek uyumluluk bilgileri 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
   }
}
  

.NET Framework Eşdeğeri

Uygulanamaz. Standart C işlevini çağırmak için PInvoke kullanın. Daha fazla bilgi için bkz. Platform Çağırma Örnekleri.

Ayrıca bkz.

Başvuru

Dize Düzenlemesi (CRT)

Yerel Ayar

Çok Baytlı Karakter Sıralarının Yorumu

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l