strtok,_mbstok,wcstok

提供: RAD Studio
移動先: 案内検索

string.h:インデックス への移動


ヘッダーファイル

string.h, mbstring.h

カテゴリ

メモリと文字列の操作ルーチン

プロトタイプ

char *strtok(char *s1, const char *s2);

wchar_t *wcstok(wchar_t *s1, const wchar_t *s2);

unsigned char *_mbstok(unsigned char *s1, const unsigned char *s2);

説明

文字列からトークンを検索します。トークンは,2 番めの文字列で定義される区切り文字によって区切られます。

strtok は,文字列 s1 が 0 個以上のテキストトークンのシーケンスで構成され,区切り文字列 s2 に含まれる文字の 1 つ以上の連なりで各トークンが区切られているとみなします。

strtok を初回に呼び出すと,s1 内の最初のトークンの最初の文字へのポインタが返され,s1 の返されたトークンの直後にヌル文字が書き込まれます。最初の引数を NULL にして続けて strtok を呼び出すと,トークンがなくなるまで,文字列 s1 に対して同じ操作が行われます。

区切り文字列 s2 は,呼び出しごとに異なってもかまいません。

メモ:  strtok を使用する関数呼び出しによって strtok の呼び出しをネストすることはできません。そのようにすると,無限ループが発生します。

戻り値

strtok は,s1 で検出されたトークンへのポインタを返します。トークンがなくなると,ヌルポインタが返されます。



  #include <string.h>
  #include <stdio.h>
  int main(void)
  {
     char input[16] = "abc,d";
     char *p;
     /* strok は,トークンが見つかると,
     その直後にヌルターミネータを置きます */
     p = strtok(input, ",");
     if (p)   printf("%s\n", p);
     /* 次に最初のパラメータを NULL にして
     strok を呼び出すと,このトークンの
     次の文字へのポインタが返されます  */
     p = strtok(NULL, ",");
     if (p)   printf("%s\n", p);
     return 0;
  }



移植性



POSIX Win32 ANSI C ANSI C++

strtok

+

+

+

+

_mbstok

+

wcstok

+

+

+