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 NULLstrToken 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