※ ChatGPTを利用し、要約された質問です(原文:C言語 キーボードで入力された文字列を表示する方法)
C言語でキーボードから入力された文字列を表示する方法
このQ&Aのポイント
C言語でキーボードから入力された文字列を表示する方法について質問があります。参考書の例文を読み進めている中で、特定のfor文の処理が理解できません。
質問の内容は、for文の処理についてです。具体的には、なぜval[j]が出てくるのかと、最後のfor文がどのような処理をしているのかがわからないということです。
プログラムの実行結果は、キーボードから入力された文字列の数値一覧です。具体的には、85,41,26,956,12という文字列が入力された場合、それぞれの数値が改行されて表示されます。
C言語 キーボードで入力された文字列を表示する方法
はじめまして。
C言語を学習中です。
参考書の例文に、自分なりにコメントを付けて読み進めましたが、どうしても下記のfor文の処理が理解ずに困っております。
for (j = 0;j < i;j++) printf("%d\n",val[j]);
なぜval[j](ジェイ)が出てくるのかがわかりません。
val[j](ジェイ)はval[i](アイ)とどのような関連性があるのでしょうか。
また、最後のfor文はどのような処理をしているのでしょうか。
どうか教えていただきたく、お願い致します。
●例文
次のプログラムは、入力された数値の一覧を表示する例です。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void)
{
int i,j,val[10];
char str[32],*ch;
fgets(str,sizeof(str),stdin); /*キーボードで入力された文字列strを読込む*/
ch = strtok(str,",\n"); /* 文字列strの中から単語を取り出して変数chに代入*/
for (i = 0;i < 10;i++) { /*for文(初期化i=0;条件式i<10;更新i++)*/
if (ch == NULL) { /*文字列strの中に単語が無ければ*/
break; /*ループを抜ける*/
} else { /*文字列strの中に単語があれば*/
val[i] = atoi(ch); /*文字列strの中の最初の単語を数値に変換して配列valの
i要素に代入する*/
}
ch = strtok(NULL,",\n"); /*文字列strの中の次の単語を取り出す*/
}
for (j = 0;j < i;j++) printf("%d\n",val[j]);
return;
}
このプログラムの実行結果は次の通りになります。
85,41,26,956,12 入力した文字列
85
41
26
956
12
お礼
ご回答いただき、ありがとうございました。 勉強になりました。