総合手引 | セクション 3 | English | オプション |
#include <string.h>
strtok() 関数は、ヌルで終端された文字列 str の中の連続するトークンを分割するために用いられます。 これらのトークンは、その文字列内で sep の中の文字の少なくとも 1 つによって区分されています。 最初に strtok() を呼び出すときには、 str を指定する必要があります。 同じ文字列からさらにトークンを取得するために 続いて呼び出すときには、 代わりに空ポインタを渡す必要があります。 セパレータ文字列 sep は毎回与えなければなりませんが、 呼び出しのたびに変更しても構いません。
ライブラリは、実装上、他のライブラリ関数が strtok() を呼び出したりしないかのように動作します。
strtok_r() 関数は strtok() の再入可能なバージョンです。 コンテキストポインタ last は、呼び出し毎に与えなければなりません。 strtok_r() は、別々のコンテキストポインタが使われている限りでは、 お互いの内部で 2 つのパースループを入れ子にするためにも使えます。
strtok() および strtok_r() 関数は、そのトークン自体を NUL 文字で置き換えた後、 文字列の次のトークンの先頭へのポインタを返します。 トークンがなくなると、NULL ポインタを返します。
char test[80], blah[80]; char *sep = "\\/:;=-"; char *word, *phrase, *brkt, *brkb;strcpy(test, "This;is.a:test:of=the/string\\tokenizer-function.");
for (word = strtok_r(test, sep, &brkt); word; word = strtok_r(NULL, sep, &brkt)) { strcpy(blah, "blah:blat:blab:blag");
for (phrase = strtok_r(blah, sep, &brkb); phrase; phrase = strtok_r(NULL, sep, &brkb)) { printf("So far we're at %s:%s\n", word, phrase); } }
FreeBSD 3.0 での実装に基づきます。
STRTOK (3) | November 27, 1998 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | If you are angry with someone, you should walk a mile in their shoes - then you'll be a mile away from them, and you'll have their shoes. | ” |