strtok_r() — ストリングのトークン化 (再開可能)

フォーマット

#include <string.h>
char *strtok_r(char *string, const char *seps,
               char **lasts);

言語レベル

XPG4

スレッド・セーフ

はい

ロケール依存

この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。詳細については、CCSID およびロケールの理解を参照してください。

説明

この関数は、strtok() の再始動可能バージョンです。

strtok_r() 関数は、string をゼロ個以上のトークンのシリーズとして読み取り、 sepsstring 内のトークンの区切り文字として役立つ 文字のセットとして読み取ります。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 ポインターが戻されます。 すべてのトークンはヌル終了されます。

関連情報