char __far * __far strtok(char __far *s1, const char __far *s2);(C90)
char __far * __far strtok(char __far * restrict s1, const char __far * restrict s2);(C99) 【V1.07以降】
トークンへのポインタを返します。トークンが存在しない場合は,nullポインタを返します。
s1の指す文字列を,s2の指す文字列中の文字で区切ることによって,トークンの列に分割します。これは最初に呼び出されると,最初の引数としてs1を持ち,その後はnullポインタを最初の引数とする呼び出しが続きます。s2の指す区切り文字列は,呼び出しごとに異なっていてもかまいません。
最初の呼び出しでは,s2の指す区切り文字列中に含まれない最初の文字を求めてs1の指す文字列中をサーチします。そのような文字が見つからなかった場合,nullポインタを返します。そのような文字が見つかった場合,その文字が最初のトークンの始まりとなります。
その後,そのときの区切り文字列に含まれる文字を求めてそこからサーチを行います。そのような文字が見つからなかった場合,そのときのトークンはs1の指す文字列の終わりまで拡張され,あとに続くサーチはnullポインタを返します。そのような文字が見つかった場合,その文字はトークンの終端を示すnull文字(\0)で上書きされます。本関数は,あとに続く文字を指すポインタをセーブします。字句の次の探索はそこから開始されます。
第1実引数の値がnullポインタを持つ2回目以降の呼び出しでは,保持したポインタが指すところから探索が開始されます。この場合,リエントラントでないコードになります。