• ベストアンサー

C言語

ファイルデータ(11,22,33,0,44)を読み込んで表示することを5回繰り返すプログラムを作りたいのですが分かりません。 さらに出来ればファイルデータが0でなければ表示し、0を読み込んだら終了するwhile文でのプログラムも教えてください。 途中経過 #include <stdlib.h> #include <stdio.h> int main(void) { int x = 0,i; FILE *infile; infile = fopen ("test.txt", "r"); if(infile == NULL) { fprintf(stderr, "test.txtが開けません\n"); exit(1); } i = 0 while(1){ i++; fscanf(infile, "%d", &x); printf("%d\n", x); if(i = 5)break; } fclose(infile); return 0; } ここまでで実行すると11しか表示されません。 これまでの質問分かるかたどなたか教えてくださいお願いします。

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

  • ベストアンサー
  • yone_sk
  • ベストアンサー率34% (58/167)
回答No.2

まず、簡単なところから。 i = 0  ↓ i = 0; if(i = 5)break;  ↓ if(i == 5)break; fscanf で "%d" を使用していますが、これだと文字列は取得できません。 printfでも同様です。 それと、間違いではないのですが whileで無限ループさせて、breakで抜けるというのは場合によっては危険です。 以下、修正したソースになります。 -------------------------------------- #include <stdlib.h> #include <stdio.h> int main(void) { char *x; int i; FILE *infile; infile = fopen ("test9.txt", "r"); if(infile == NULL) { fprintf(stderr, "test.txtが開けません\n"); exit(1); } i = 0; while(i < 5){ i++; fscanf(infile, "%s", x); printf("%s\n", x); } fclose(infile); return 0; } --------------------------------------

jinnora7
質問者

お礼

回答ありがとうございました。 解決しました。

jinnora7
質問者

補足

分かりやすい回答ありがとうございます。 すみませんもう一つ質問なんですけど、読み込むデータファイルの内容を 奇数だけ(+-どっちも)にするにはどうすればいいのでしょうか?

その他の回答 (1)

回答No.1

未検証です。 >i = 5 と >i == 5 の違いはわかりますか?

jinnora7
質問者

お礼

すみません分かります。

jinnora7
質問者

補足

分からないです。

関連するQ&A