ファイル出入力について
Posted: 2016年7月01日(金) 15:47
dat.txtというファイルに、
15 いちご
2 にんじん
5 ごりら
と打っておいて、番号をキーボードで打ったら文字が表示されるプログラムってどうやるんですか?
例
数字を入力して:5
結果:ごりら
15 いちご
2 にんじん
5 ごりら
と打っておいて、番号をキーボードで打ったら文字が表示されるプログラムってどうやるんですか?
例
数字を入力して:5
結果:ごりら
それはdixqさんが出したお題のプログラムを書いて、そのコードを掲示してから聞くことだと思います。無記名 さんが書きました:特定の変数を入れる処理をループ文にするのにはどういう意味があるのでしょうか?
feof の使い方が間違っています。double-clutch. さんが書きました:質問があれば、受け付けます。
while( !(feof(fp))) {
fscanf(fp, "%d %s", &j, str);
if (i == j) {
printf("見つかった文字列:: %s", str);
break;
}
}
while( !(feof(fp))) {
fscanf(fp, "%d", &j);
fscanf(fp, "%s", str);
if (i == j) {
printf("見つかった文字列:: %s", str);
break;
}
}
[loop]-[ (fp が指しているファイルが終端に達している!!) の真偽反転 ]
// つまり、fp が指しているファイルが終端に達していない場合は、ループに入る
-[ file から数字を読込み、変数 j に保持する ]
-[ file から文字列を読込み、配列 str に保持する ]
-[ file の読込み地点を次の行の、行頭に移動する ]
[if]-[ i == j ]
-[ 配列 str に保持されている文字列をコンソールに出力する ]
-[ loop を抜ける ]
[/loop]
なぜ、この質問には答えず、頓珍漢な説明をするんですか?かずま さんが書きました: fscanf(fp, "%d %s", &j, str); のあとに printf("d=%d, s=%s\n", j, str);
を入れて、検出なしとなるような番号を指定するとどうなりますか?
fprintf() は、fscanf() の間違いですよね。double-clutch. さんが書きました: それに際し、処理をより細かく行いたいので、
関数 fprintf() では、一度の呼び出しに対し、制御文に含めて良い『フォーマット指
定子』はひとつまでとする
fscanf を 2つに分けて、j への読み込みと、str の読み込みの 2行はいいとして、
file には、'\0' はありません。
実行結果 printf は 4回実行されていることがわかります。かずま さんが書きました: fscanf(fp, "%d %s", &j, str); のあとに printf("d=%d, s=%s\n", j, str);
を入れて、検出なしとなるような番号を指定するとどうなりますか?