strtok,_mbstok,wcstok
string.h:インデックス への移動
ヘッダーファイル
string.h, mbstring.h
カテゴリ
メモリと文字列の操作ルーチン
プロトタイプ
char *strtok(char *s1, const char *s2);
wchar_t *wcstok(wchar_t *s1, const wchar_t *s2);
unsigned char *_mbstok(unsigned char *s1, const unsigned char *s2);
説明
文字列からトークンを検索します。トークンは,2 番めの文字列で定義される区切り文字によって区切られます。
strtok は,文字列 s1 が 0 個以上のテキストトークンのシーケンスで構成され,区切り文字列 s2 に含まれる文字の 1 つ以上の連なりで各トークンが区切られているとみなします。
strtok を初回に呼び出すと,s1 内の最初のトークンの最初の文字へのポインタが返され,s1 の返されたトークンの直後にヌル文字が書き込まれます。最初の引数を NULL にして続けて strtok を呼び出すと,トークンがなくなるまで,文字列 s1 に対して同じ操作が行われます。
区切り文字列 s2 は,呼び出しごとに異なってもかまいません。
メモ: strtok を使用する関数呼び出しによって strtok の呼び出しをネストすることはできません。そのようにすると,無限ループが発生します。
戻り値
strtok は,s1 で検出されたトークンへのポインタを返します。トークンがなくなると,ヌルポインタが返されます。
例
#include <string.h>
#include <stdio.h>
int main(void)
{
char input[16] = "abc,d";
char *p;
/* strok は,トークンが見つかると,
その直後にヌルターミネータを置きます */
p = strtok(input, ",");
if (p) printf("%s\n", p);
/* 次に最初のパラメータを NULL にして
strok を呼び出すと,このトークンの
次の文字へのポインタが返されます */
p = strtok(NULL, ",");
if (p) printf("%s\n", p);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
strtok |
+ |
+ |
+ |
+ |
_mbstok |
+ |
|||
wcstok |
+ |
+ |
+ |