• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 キーボードで入力された文字列を表示する方法)

C言語でキーボードから入力された文字列を表示する方法

このQ&Aのポイント
  • C言語でキーボードから入力された文字列を表示する方法について質問があります。参考書の例文を読み進めている中で、特定のfor文の処理が理解できません。
  • 質問の内容は、for文の処理についてです。具体的には、なぜval[j]が出てくるのかと、最後のfor文がどのような処理をしているのかがわからないということです。
  • プログラムの実行結果は、キーボードから入力された文字列の数値一覧です。具体的には、85,41,26,956,12という文字列が入力された場合、それぞれの数値が改行されて表示されます。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

配列の[]の中は、その値が重要です。 val[i]だろうがval[j]だろうがval[nanika]だろうが、その[]の中を評価(計算)した最終的な値だけが関係します。 > なぜval[j](ジェイ)が出てくるのかがわかりません。 ↓のjの値を使いたいからです。 > for (j = 0;j < i;j++) printf("%d\n",val[j]); int k;を使うなら for (k = 0;k < i;k++) printf("%d\n",val[k]); int nanika;を使うなら for (nanika = 0;nanika < i;nanika++) printf("%d\n",val[nanika]); です。「j」には意味はありません。 > val[j](ジェイ)はval[i](アイ)とどのような関連性があるのでしょうか。 valは配列の名前です。 j==i ならval[j]==val[i] という関連があります。 > また、最後のfor文はどのような処理をしているのでしょうか。 見たままの処理です。単純にforループで、printfを繰り返しているだけです。 Cの文法では、forに{}は必ずしも必要ではありません。繰り返す式文が一つだけのときは、{}はいりません。 このとき、iは、その前にある > for (i = 0;i < 10;i++) {  /*for文(初期化i=0;条件式i<10;更新i++)*/ のループ終了時のiになります。このループの終了は、 i<10を満さなくなったときと、 > break;  /*ループを抜ける*/ でループを抜けたときです。 それぞれ、iが何になるか、考えてみましょう。考えてわかなかったら > ch = strtok(NULL,",\n");  /*文字列strの中の次の単語を取り出す*/ > } printf("i:%d\n",i) ; /*ループ終了時のiを表示 */ > for (j = 0;j < i;j++) printf("%d\n",val[j]); とでもして確認してください。 ※ ところで /*for文(初期化i=0;条件式i<10;更新i++)*/ というコメントはよくありません。プログラムをただ書き写しただけ。なんの説明にもなってません。 何のためのものか、どんな意味があるのか、を考えるようにしましょう。例えば /* i = 0から9までの整数。順番に */ とか

501xx
質問者

お礼

ご回答いただき、ありがとうございました。 勉強になりました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • bajutsu
  • ベストアンサー率20% (139/693)
回答No.3

配列の要素を指定することができれば、なんでもいい。 所詮、ただの変数名だし。 i でも j でもいいし yanbarukuina でもいい。 最後のfor は、 配列valの要素を一つずつ printfで表示させてるだけでしょ。

501xx
質問者

お礼

ご回答いただき、ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.1

ただのカウンタじゃないんですか? val配列の要素数はiが把握してますが、それを1つ1つ取り出したいが為に、 jを利用してiまで繰り返してるようにしか見えません。 最後のループでval[i]を出力しようとしても要素数を超えた(つまりi=10)のエラー、 もしくは初期化されていない何かしらの値、しか出力されないでしょう。 valは、val[0]~val[i-1]までしか入力した値が入っていませんので。

501xx
質問者

お礼

ご回答いただき、ありがとうございました。 参考になりました。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • EPSON PHOT+を使用して年賀状の印刷をしようとした際、画面右脇の印刷開始マークが表示されず印刷できない状況です。
  • 住所録も入れた状態で印刷ができないため、困っています。
  • PCはWindows 11を使用しています。問題があれば教えていただきたいです。
回答を見る

専門家に質問してみよう