strtok_r() — ストリングのトークン化 (再開可能)
形式
#include <string.h>
char *strtok_r(char *string, const char *seps,
char **lasts);言語レベル
XPG4
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 詳しくは、 CCSID とロケールについてを参照してください。
説明
この関数は、 strtok()の再始動可能バージョンです。
strtok_r() 関数は、 string をゼロ個以上の一連のトークンとして読み取り、 seps を string内のトークンの区切り文字として機能する文字のセットとして使用します。 string 内のトークンは、
seps からの 1 つ以上の区切り文字によって分離することができます。 引数 lasts は、ユーザー提供のポインターを指します。このポインターは、 strtok_r() 関数が同じストリングのスキャンを続行するために必要な保管情報を指します。
特定のヌル終了 stringに対する strtok_r() 関数の最初の呼び出しでは、先頭の区切り文字をスキップして、 string内の最初のトークンを検索します。 最初のトークンの先頭文字へのポインターを戻し、戻されたトークンの
直後の string にヌル文字を書き込み、
lasts が指すポインターを更新します。
stringから次のトークンを読み取るには、NULL string 引数を指定して strtok_r() 関数を呼び出します。 これにより、 strtok_r() 関数は直前のトークン・ストリング内の次のトークンを検索します。 元の string 内の各区切り文字は、ヌル文字に置き換えられ、lasts が指すポインターは更新されます。 seps 内の区切り文字のセットは、
呼び出しごとに異なりますが、lasts は前の呼び出しから変更しないで
残す必要があります。 string にトークンがなくなると、
NULL ポインターが戻されます。
戻り値
strtok_r() 関数は、最初に呼び出されたときに、 string内の最初のトークンを指すポインターを戻します。 同じトークン・ストリングを使用した後の呼び出しでは、 strtok_r() 関数は、ストリング内の次のトークンを指すポインターを戻します。 トークンがなくなると、NULL ポインターが戻されます。 すべてのトークンはヌル終了されます。