C言語なら俺に聞け(入門篇) Part 42
■ このスレッドは過去ログ倉庫に格納されています
0753デフォルトの名無しさん
2009/01/18(日) 20:24:51char *strtok( char *s1, const char *s2 );
strtok関数の最初の呼出しでは、s2で指定したデリミタではない最初の文字を、s1内で探索します。
見つからなければ、s1にはトークンがないことを示すNULLポインタを返します。
一方、そのような文字を見つけた場合には、それが最初のトークンの先頭になります。
次に、strtok関数はその位置から現在のデリミタ文字を探索していきます。
見つからない場合には、文字列s1の終わりまでを現在のトークンとします。
見つけた場合には、その文字をヌル文字で上書きして、現在のトークンの探索を終了させます。
strtok関数は、このヌル文字の後ろに続く文字位置を指すポインタを保存します。
次の呼出しで最初の引数がNULLポインタの場合には、次のトークンを見つけるための探索が
この位置から開始されます。
なので、デリミタが '\n' の時、文字列 "\n" においてデリミタでない最初の文字が見つからないから
strtokは何もしないで、null を返す。あと strtok は文字列を変更するので、リテラル文字列(文字列定数)
を第1引数にセットするのは、あまりヨロシク無いかもしれない。
■ このスレッドは過去ログ倉庫に格納されています