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_l
sürümlerininstrtok
, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri vardır.
Önemli
_mbstok_s
ve _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 str
bulunan 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 NULL
context
geçerli bir bağlam işaretçisi için bir işaretçiysestr
, hata yoktur.
Açıklamalar
İşlev strtok_s
ailesi içinde str
bir 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_s
işlev, baştaki sınırlayıcıları atlar ve içindeki str
ilk belirtecin işaretçisini döndürerek belirteci null karakterle sonlar. öğesine yapılan bir dizi çağrı strtok_s
ile 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 str
sonraki 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, NULL
str
değiştirilen str
iç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_l
iç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 olağan |
_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