strtok_s
, , _strtok_s_l
wcstok_s
, _wcstok_s_l
, , _mbstok_s
,_mbstok_s_l
Menemukan token berikutnya dalam string, dengan menggunakan lokal saat ini atau lokal yang diteruskan. Versi , , wcstok
_strtok_l
, _wcstok_l
, , _mbstok
, ini _mbstok_l
memiliki peningkatan keamanan, seperti yang dijelaskan dalam Fitur keamanan di CRT.strtok
Penting
_mbstok_s
dan _mbstok_s_l
tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.
Sintaks
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
);
Parameter
str
String yang berisi token atau token untuk ditemukan.
delimiters
Kumpulan karakter pemisah yang akan digunakan.
context
Digunakan untuk menyimpan informasi posisi antara panggilan ke fungsi.
locale
Lokal yang akan digunakan.
Nilai hasil
Mengembalikan penunjuk ke token berikutnya yang ditemukan di str
. Mengembalikan NULL
ketika tidak ada lagi token yang ditemukan. Setiap panggilan memodifikasi str
dengan mengganti karakter null untuk pemisah pertama yang terjadi setelah token yang dikembalikan.
Kondisi kesalahan
str |
delimiters |
context |
Nilai hasil | errno |
---|---|---|---|---|
NULL |
any | penunjuk ke penunjuk null | NULL |
EINVAL |
any | NULL |
any | NULL |
EINVAL |
any | any | NULL |
NULL |
EINVAL |
Jika str
tetapi NULL
context
merupakan penunjuk ke penunjuk konteks yang valid, tidak ada kesalahan.
Keterangan
Keluarga strtok_s
fungsi menemukan token berikutnya di str
. Kumpulan karakter dalam delimiters
menentukan kemungkinan pembatas token yang akan ditemukan pada str
panggilan saat ini. wcstok_s
dan _mbstok_s
adalah versi karakter lebar dan multibyte-character dari strtok_s
. Argumen dan mengembalikan nilai dan wcstok_s
_wcstok_s_l
merupakan string karakter lebar. Argumen dan mengembalikan nilai dan _mbstok_s
_mbstok_s_l
merupakan string multibyte-character. Fungsi-fungsi ini berulah secara identik jika tidak.
Fungsi ini memvalidasi parameternya. Ketika kondisi kesalahan terjadi, seperti dalam tabel Kondisi Kesalahan, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini diatur errno
ke EINVAL
dan mengembalikan NULL
.
Pada panggilan pertama ke strtok_s
, fungsi melewati pemisah terkemuka dan mengembalikan penunjuk ke token pertama di str
, mengakhiri token dengan karakter null. Lebih banyak token dapat dipecah dari str
sisa oleh serangkaian panggilan ke strtok_s
. Setiap panggilan untuk strtok_s
memodifikasi str
dengan menyisipkan karakter null setelah token yang dikembalikan oleh panggilan tersebut. Penunjuk context
melacak string mana yang sedang dibaca dan di mana dalam string token berikutnya akan dibaca. Untuk membaca token berikutnya dari str
, panggil strtok_s
dengan NULL
nilai untuk str
argumen , dan berikan parameter yang sama context
. Argumen NULL
str
menyebabkan strtok_s
pencarian token berikutnya dalam yang dimodifikasi str
. Argumen delimiters
dapat mengambil nilai apa pun dari satu panggilan ke panggilan berikutnya sehingga kumpulan pemisah dapat bervariasi.
context
Karena parameter menggantikan buffer statis yang digunakan di strtok
dan _strtok_l
, dimungkinkan untuk mengurai dua string secara bersamaan dalam utas yang sama.
Nilai output dipengaruhi oleh pengaturan LC_CTYPE
pengaturan kategori lokal. Untuk informasi selengkapnya, lihat setlocale
.
Versi fungsi-fungsi ini tanpa _l
akhiran menggunakan lokal utas saat ini untuk perilaku yang bergantung pada lokal ini. Versi dengan akhiran _l
identik kecuali mereka menggunakan lokal yang ditentukan oleh locale
parameter . Untuk informasi selengkapnya, lihat Lokal.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Pemetaan rutin teks generik
TCHAR.H Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tcstok_s |
strtok_s |
_mbstok_s |
wcstok_s |
_tcstok_s_l |
_strtok_s_l |
_mbstok_s_l |
_wcstok_s_l |
Persyaratan
Rutin | Header yang diperlukan |
---|---|
strtok_s |
<string.h> |
_strtok_s_l |
<string.h> |
wcstok_s ,_wcstok_s_l |
<string.h> atau <wchar.h> |
_mbstok_s ,_mbstok_s_l |
<mbstring.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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
Lihat juga
Manipulasi string
Lokal
Interpretasi urutan karakter multibyte
strcspn
, , wcscspn
_mbscspn
,_mbscspn_l
strspn
, , wcsspn
_mbsspn
,_mbsspn_l