• 締切済み

strtokのしくみについて

よろしくお願い致します。 strtokは以下のように使いますよね。 (と言っても今回初めて使うのですが) 1回目はstrを渡しているので自然ですが、2回目以降はNULLですよね。なのにどうしてstrを続けて分解するということが出来るのでしょうか? うまく説明できませんが、要はstrtokはどういうコードで実現されているのでしょうか? int main(void) { char str[] = "ABCD ef.1234.G"; char *tp; /* スペース.を区切りに文字列を抽出 */ tp = strtok( str, " ." ); puts( tp ); while ( tp != NULL ) { tp = strtok( NULL," ." ); if ( tp != NULL ) puts( tp ); } return 0; }

みんなの回答

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.2

一般的に、strtok()内部ではstatic変数で保持されていると思います。だから、マルチスレッドの場合に注意が必要だったりします。

mk1234
質問者

お礼

回答ありがとうございます。 変数が保持されているのですね。

関連するQ&A