strtok() — ストリングのトークン化
フォーマット
#include <string.h>
char *strtok(char *string1, const char *string2);
言語レベル
ANSI
スレッド・セーフ
いいえ
代わりに strtok_r() を使用します。
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。詳細については、CCSID およびロケールの理解を参照してください。
説明
strtok() 関数は、string1 をゼロ個以上のトークンのシリーズとして読み取り、 string2 を string1 内のトークンの区切り文字として役立つ 文字のセットとして読み取ります。string1 内のトークンは、 string2 からの 1 つ以上の区切り文字によって分離することができます。string1 内のトークンは、strtok() 関数への一連の呼び出しによって見つかります。
指定された string1 に関する strtok() 関数への最初の呼び出しで、 strtok() 関数は先行区切り文字をスキップして、string1 内の最初のトークンを検索します。最初のトークンへのポインターが戻されます。
strtok() 関数が NULL string1 引数で呼び出されると、 次のトークンは最後のヌル以外の string1 パラメーターの保管済みコピーから読み取られます。それぞれの区切り文字は、ヌル文字で置き換えられます。 区切り文字のセットは呼び出しごとに異なるため、string2 は任意の値を取ることができます。string1 の初期値は、 strtok() 関数への呼び出し後は保存されないことに注意してください。
strtok() 関数は日付をバッファーに書き込むことに注意してください。この関数が受け渡されるバッファーは、strtok() 関数によって損傷を受けることになるため、トークン化されるストリングは、重要ではないバッファーに組み込まれるようにしてください。
戻り値
例
#include <stdio.h>
#include <string.h>
int main(void)
{
char *token, *string = "a string, of, ,tokens¥0,after null terminator";
/* the string pointed to by string is broken up into the tokens
"a string", " of", " ", and "tokens" ; the null terminator (¥0)
is encountered and execution stops after the token "tokens" */
token = strtok(string, ",");
do
{
printf("token: %s¥n", token);
}
while (token = strtok(NULL, ","));
}
/***************** Output should be similar to: *****************
token: a string
token: of
token:
token: tokens
*/