- ベストアンサー
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しか表示されません。 これまでの質問分かるかたどなたか教えてくださいお願いします。
- みんなの回答 (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; } --------------------------------------
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
未検証です。 >i = 5 と >i == 5 の違いはわかりますか?
お礼
すみません分かります。
補足
分からないです。
お礼
回答ありがとうございました。 解決しました。
補足
分かりやすい回答ありがとうございます。 すみませんもう一つ質問なんですけど、読み込むデータファイルの内容を 奇数だけ(+-どっちも)にするにはどうすればいいのでしょうか?