Bagikan melalui


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_lmemiliki 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 NULLcontext 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 NULLstr 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

Baca juga

Manipulasi string
Lokal
Interpretasi urutan karakter multibyte
strcspn, wcscspn, _mbscspn, _mbscspn_l
strspn, wcsspn, _mbsspn, _mbsspn_l