1. ホーム
  2. c

[解決済み] C言語でstrtok()はどのように文字列をトークンに分割するのですか?

2022-03-06 09:54:56

質問

の仕組みについて教えてください。 strtok() 関数を使用します。マニュアルには、文字列をトークンに分割すると書いてあります。マニュアルを読んでも、実際に何をするのか理解できません。

にウォッチを追加しました。 str*pch の内容は、最初のwhileループが発生したときに動作しているかどうかを確認するために str は "これ" だけでした。以下の出力はどのように画面に表示されたでしょうか?

/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;
}

出力します。

文字列を分割する "- This, a sample string." をトークンに分割します。
この
a
サンプル
文字列

どのように解決するのですか?

strtok() つまり、区切り文字のいずれかから次の区切り文字までが1つのトークンとなります。あなたの場合、開始トークンは "-" から始まり、次のスペース " " で終わります。そして、次のトークンは " " から始まり、"," で終わります。ここで、出力として "This"を得ることができます。同様に、残りの文字列もスペースからスペースへとトークンに分割され、最終的に最後のトークンが "." で終わります。