• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:次のソースの使い方(strtok()関数))

strtok()関数の使い方と意味について解説

このQ&Aのポイント
  • strtok()関数を使ったプログラムの使い方と意味についてです。
  • プログラムを実行すると入力待ち画面になりますが、何を入力すれば何が得られるのかわからない方に解説します。
  • 入力には「1」を入力し、プログラムを終了するには[Ctrl]+[c]を押します。結果の表示についても説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

はじめに単語の個数を入れて 次に単語数分の単語を入れます。 5 word,apple quit,desk orange,flag radio,TV DVD,blulay

utu-ne
質問者

お礼

 ありがとうございます。大変よく分かりました。  ご教示を受けて、ソースを次のように書き換えてみました。 (“□”はタブ) ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ #include <stdio.h> #include <stdlib.h> /* EXIT_SUCCESS */ #include <string.h> /* strtok() */ int main(void) { □int i, n; □char str[10], *token1, *token2; □printf("入力する文字列の個数を入力して下さい。\n"); □scanf("%d", &n); □printf("入力は、 %d です。\n", n); □printf("文字列を %d 個入力して下さい。\n", n); □printf("(半角10字以内)\n"); □for (i=0; i<n; i++) { □□scanf("%s", str); □□printf("入力は、 %s です。\n", str); □□token1 = strtok(str, ","); □□token2 = strtok(NULL, ","); □□printf("hello = %s , world = %s\n" ,token1 ,token2); □} □return EXIT_SUCCESS; } ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆  そして、入力文字列が2つ以上のコンマで区切られていたらどうなるか、疑問に思いましたので、次の入力を行ってみました。 5 ab,cd,ef gh,ij,kl mn,op,qr st,uv,wx yz,ab,cd  その実行結果は、次のようになりました。 ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 入力する文字列の個数を入力して下さい。 入力は、 5 です。 文字列を 5 個入力して下さい。 (半角10字以内) 入力は、 ab,cd,ef です。 hello = ab , world = cd 入力は、 gh,ij,kl です。 hello = gh , world = ij 入力は、 mn,op,qr です。 hello = mn , world = op 入力は、 st,uv,wx です。 hello = st , world = uv 入力は、 yz,ab,cd です。 hello = yz , world = ab ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆  ここでのプログラムの働きはどうなっているのでしょうか。2つ目のトークンをtoken2に読み込んだところで、あとの部分は読み捨てられているのでしょうか。

その他の回答 (1)

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

□□token1 = strtok(str, ","); □□token2 = strtok(NULL, ","); この働きは、 http://hitorilife.com/strtok.php を読んでください。

utu-ne
質問者

お礼

 ありがとうございました。

関連するQ&A

専門家に質問してみよう