strtok

文字列を区切り文字で分割します.

#include <string.h>
char *strtok(
    char * restrict s1,
    const char * restrict s2 /* 区切り文字列 */
);

strtok 関数は s1 が指す文字列を,s2 が指す文字列の中のいずれかの文字で区切られる字句の列に分割します.

strtok 関数の一連の動作は以下の通りです.

  1. s2 が指す区切り文字列に含まれない最初の文字が s1 が指す文字列中に存在するかを調べます.
    1. その文字が見つかった場合,それを最初の字句の始まりとします.
    2. その文字が見つからなかった場合,strtok 関数は空ポインタ(NULL) を返して終了します.
  2. 見つかった文字の位置から区切り文字列に含まれている文字を探します.
    1. その文字が見つかった場合,その文字を '\0' で書き換え,その時点の字句を終了させます.
    2. その文字が見つからなかった場合,その時点の字句を s1 が指す文字列の最後までとみなします.(次回以降の検索では空ポインタを返します)
  3. 2 回目以降の呼出しでは,保持したポインタが指すところから探索を開始する以外は上記と同じ動作をします.(2 回目以降の呼出しでは第 1 引数 s1 に NULL を指定するようにしてください.)

戻り値

  • 字句が存在するとき: 字句の最初の文字へのポインタ
  • 字句が存在しないとき: 空ポインタ

C言語サンプルプログラム

文字列を指定文字で分割するサンプルプログラムをご覧下さい.

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.