Share via


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

Geçerli yerel ayarı veya geçirilen yerel ayarı kullanarak bir dizedeki sonraki belirteci bulur. , , , wcstok, _wcstok_l, _mbstok_l_mbstok , _strtok_lsürümlerininstrtok, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri vardır.

Önemli

_mbstok_sve _mbstok_s_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_s(
   char* str,
   const char* delimiters,
   char** context
);

char* _strtok_s_l(
   char* str,
   const char* delimiters,
   char** context,
   _locale_t locale
);

wchar_t* wcstok_s(
   wchar_t* str,
   const wchar_t* delimiters,
   wchar_t** context
);

wchar_t *_wcstok_s_l(
   wchar_t* str,
   const wchar_t* delimiters,
   wchar_t** context,
   _locale_t locale
);

unsigned char* _mbstok_s(
   unsigned char* str,
   const unsigned char* delimiters,
   char** context
);

unsigned char* _mbstok_s_l(
   unsigned char* str,
   const unsigned char* delimiters,
   char** context,
   _locale_t locale
);

Parametreler

str
Bulunacak belirteci veya belirteçleri içeren bir dize.

delimiters
Kullanılacak sınırlayıcı karakter kümesi.

context
İşleve yapılan çağrılar arasında konum bilgilerini depolamak için kullanılır.

locale
Kullanılacak yerel ayar.

Dönüş değeri

içinde strbulunan sonraki belirtecin işaretçisini döndürür. Başka belirteç bulunamadığında döndürür NULL . Her çağrı, str 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.

Hata koşulları

str delimiters context Dönüş değeri errno
NULL herhangi bir null işaretçi işaretçisi NULL EINVAL
herhangi bir NULL herhangi bir NULL EINVAL
herhangi bir herhangi bir NULL NULL EINVAL

ancak NULLcontext geçerli bir bağlam işaretçisi için bir işaretçiysestr, hata yoktur.

Açıklamalar

İşlev strtok_s ailesi içinde strbir sonraki belirteci bulur. içindeki delimiters karakter kümesi, geçerli çağrıda str bulunabilecek belirtecin olası sınırlayıcılarını belirtir. wcstok_s ve _mbstok_s geniş karakterli ve çok baytlı sürümleridir strtok_s. ve bağımsız değişkenleri ve dönüş değerleri wcstok_s_wcstok_s_l geniş karakterli dizelerdir. ve bağımsız değişkenleri ve dönüş değerleri _mbstok_s_mbstok_s_l çok baytlı karakter dizeleridir. Bu işlevler aynı şekilde davranır.

Bu işlev parametrelerini doğrular. Hata koşulları tablosunda olduğu gibi bir hata koşulu oluştuğunda, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler olarak EINVAL ayarlanır errno ve döndürürNULL.

öğesine yapılan ilk çağrıda strtok_sişlev, baştaki sınırlayıcıları atlar ve içindeki strilk belirtecin işaretçisini döndürerek belirteci null karakterle sonlar. öğesine yapılan bir dizi çağrı strtok_sile kalan str bölümünden daha fazla belirteç ayrılabilir. Çağrısının strtok_s her çağrısı, bu çağrı tarafından döndürülen belirtecin arkasına null karakter ekleyerek değişir str . İşaretçi context hangi dizenin okunmakta olduğunu ve dizede bir sonraki belirtecin nerede okunacak olduğunu izler. 'den strsonraki belirteci okumak için bağımsız değişken için bir NULL değerle çağrısı strtok_s yapıp str aynı context parametreyi geçirin. bağımsız değişkeni, NULLstr değiştirilen striçinde bir sonraki belirteci aramaya neden olurstrtok_s. Bağımsız delimiters değişken, sınırlayıcı kümesinin değişebilmesi için bir çağrıdan sonrakine herhangi bir değeri alabilir.

context parametresi ve _strtok_liçinde strtok kullanılan statik arabelleklerin yerine geçeceğinden, aynı iş parçacığında aynı anda iki dize ayrıştırmak mümkündür.

Çı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 iş parçacığı yerel ayarını kullanır. Soneki olan _l sürümler, bunun yerine parametresi tarafından locale belirtilen yerel ayarı kullanmaları dışında aynıdır. Daha fazla bilgi için bkz . Yerel Ayar.

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 Rutin _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_tcstok_s strtok_s _mbstok_s wcstok_s
_tcstok_s_l _strtok_s_l _mbstok_s_l _wcstok_s_l

Gereksinimler

Yordam Gerekli başlık
strtok_s <string.h>
_strtok_s_l <string.h>
wcstok_s,
_wcstok_s_l
<string.h> veya <wchar.h>
_mbstok_s,
_mbstok_s_l
<mbstring.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// crt_strtok_s.c
// In this program, a loop uses strtok_s
// to print all the tokens (separated by commas
// or blanks) in two strings at the same time.

#include <string.h>
#include <stdio.h>

char string1[] =
    "A string\tof ,,tokens\nand some  more tokens";
char string2[] =
    "Another string\n\tparsed at the same time.";
char seps[]   = " ,\t\n";
char *token1 = NULL;
char *token2 = NULL;
char *next_token1 = NULL;
char *next_token2 = NULL;

int main(void)
{
    printf("Tokens:\n");

    // Establish string and get the first token:
    token1 = strtok_s(string1, seps, &next_token1);
    token2 = strtok_s(string2, seps, &next_token2);

    // While there are tokens in "string1" or "string2"
    while ((token1 != NULL) || (token2 != NULL))
    {
        // Get next token:
        if (token1 != NULL)
        {
            printf(" %s\n", token1);
            token1 = strtok_s(NULL, seps, &next_token1);
        }
        if (token2 != NULL)
        {
            printf("        %s\n", token2);
            token2 = strtok_s(NULL, seps, &next_token2);
        }
    }
}
Tokens:
A
        Another
string
        string
of
        parsed
tokens
        at
and
        the
some
        same
more
        time.
tokens

Ayrıca bkz.

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