strtok
, _strtok_l
, wcstok
, _wcstok_l
, _mbstok
, _mbstok_l
Menemukan token berikutnya dalam string, dengan menggunakan lokal saat ini atau lokal tertentu yang diteruskan. Versi yang lebih aman dari fungsi-fungsi ini tersedia; lihat strtok_s
, , wcstok_s
_strtok_s_l
, _wcstok_s_l
, , . _mbstok_s_l
_mbstok_s
Penting
_mbstok
dan _mbstok_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(
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
);
Parameter
strToken
String yang berisi token atau token.
strDelimit
Sekumpulan karakter pemisah.
locale
Lokal untuk digunakan.
context
Menunjuk ke memori yang digunakan untuk menyimpan status internal pengurai sehingga pengurai dapat berlanjut dari tempat pengurai ditinggalkan saat Berikutnya Anda memanggil wcstok
.
Nilai hasil
Mengembalikan penunjuk ke token berikutnya yang ditemukan di strToken
. Fungsi mengembalikan NULL
ketika tidak ada lagi token yang ditemukan. Setiap panggilan memodifikasi strToken
dengan mengganti karakter null untuk pemisah pertama yang terjadi setelah token yang dikembalikan.
Keterangan
Fungsi menemukan strtok
token berikutnya di strToken
. Kumpulan karakter dalam strDelimit
menentukan kemungkinan pembatas token yang akan ditemukan pada strToken
panggilan saat ini. wcstok
dan _mbstok
adalah versi karakter lebar dan multibyte-character dari strtok
. Argumen dan nilai yang dikembalikan adalah wcstok
string karakter lebar. Nilai argumet dan return adalah _mbstok
string multibyte-character. Ketiga fungsi ini berulah secara identik jika tidak.
Dua versi wcstok
argumen tidak standar. Jika Anda perlu menggunakan versi tersebut, Anda harus menentukan _CRT_NON_CONFORMING_WCSTOK
sebelum Anda #include <wchar.h>
(atau #include <string.h>
).
Penting
Fungsi-fungsi ini menimbulkan potensi ancaman yang dibawa oleh masalah buffer overrun. Masalah buffer overrun adalah metode serangan sistem yang sering, yang mengakibatkan peningkatan hak istimewa yang tidak beralasan. Untuk informasi selengkapnya, lihat Menghindari overruns buffer.
Pada panggilan pertama ke strtok
, fungsi melewati pemisah terkemuka dan mengembalikan penunjuk ke token pertama di strToken
, mengakhiri token dengan karakter null. Lebih banyak token dapat dipecah dari strToken
sisa oleh serangkaian panggilan ke strtok
. Setiap panggilan untuk strtok
memodifikasi strToken
dengan menyisipkan karakter null setelah dikembalikan oleh panggilan tersebut token
. Untuk membaca token berikutnya dari strToken
, panggil strtok
dengan NULL
nilai untuk strToken
argumen . Argumen NULL
strToken
menyebabkan strtok
pencarian token berikutnya dalam yang dimodifikasi strToken
. Argumen strDelimit
dapat mengambil nilai apa pun dari satu panggilan ke panggilan berikutnya sehingga kumpulan pemisah dapat bervariasi.
Nilai output dipengaruhi oleh pengaturan LC_CTYPE
pengaturan kategori lokal. Untuk informasi selengkapnya, lihat setlocale
.
Versi fungsi ini tanpa _l
akhiran menggunakan lokal saat ini untuk perilaku tergantung lokal ini. Versi dengan akhiran _l
identik kecuali mereka menggunakan parameter lokal yang diteruskan sebagai gantinya. Untuk informasi selengkapnya, lihat Lokal.
Catatan
Setiap fungsi menggunakan variabel statis thread-local untuk mengurai string menjadi token. Oleh karena itu, beberapa utas dapat secara bersamaan memanggil fungsi-fungsi ini tanpa efek yang tidak diinginkan. Namun, dalam satu utas, panggilan interleaving ke salah satu fungsi ini sangat mungkin menghasilkan kerusakan data dan hasil yang tidak akurat. Saat mengurai string yang berbeda, selesaikan penguraian satu string sebelum mulai mengurai string berikutnya. Selain itu, waspadai potensi bahaya saat memanggil salah satu fungsi ini dari dalam perulangan di mana fungsi lain dipanggil. Jika fungsi lain akhirnya menggunakan salah satu fungsi ini, urutan panggilan yang saling terkait akan mengakibatkan pemicu kerusakan data.
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 |
strtok |
_mbstok |
wcstok |
_tcstok |
_strtok_l |
_mbstok_l |
_wcstok_l |
Persyaratan
Rutin | Header yang diperlukan |
---|---|
strtok |
<string.h> |
wcstok |
<string.h> atau <wchar.h> |
_wcstok_l |
<tchar.h> |
_mbstok , _mbstok_l |
<mbstring.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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
Baca juga
Manipulasi string
Lokal
Interpretasi urutan karakter multibyte
strcspn
, wcscspn
, _mbscspn
, _mbscspn_l
strspn
, wcsspn
, _mbsspn
, _mbsspn_l
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk