- 締切済み
C言語 ファイル処理
今、c言語のファイル処理の勉強をしているのですが。 あるファイルfp1に 106 106 106 102 177 183 123 125 105 102 101 111 というデータが入っていたとして、 このファイルfp1からこのデータを2次元配列m[i][j]に入れたいんですけど、 一応プログラム書いてみましたがうまくいきません。 for(i=0;i<3;i++){ for(j=0;j<4;j++){ fscanf(fp1,"%d",&x); /*データ読み込み*/ m[i][j]=x; } } for(i=0;i<3;i++){ for(j=0;j<4;j++){ printf("%d ",m[i][i]); } putchar('\n'); } 変数宣言部、ファイルオープン部などは省略しました。 このプログラムを実行すると。 106 106 106 106 106 106 106 106 106 106 106 106 102 102 102 102 177 177 177 177 183 183 183 183 123 123 123 123 125 125 125 125 105 105 105 105 102 102 102 102 101 101 101 101 111 111 111 111 みたいな感じで表示されます。何ででしょうか? アドバイスお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
プログラムは思ったとおりに動きません。 書いたとおりに動きます。
- Yanch
- ベストアンサー率50% (114/225)
当方にて、質問兄のプログラムを実行してみましたけど、 実行結果は、 ---------------------------------------------------------------------- 106 106 106 106 183 183 183 183 101 101 101 101 ---------------------------------------------------------------------- でしたよ。 何か、記載部分以外にも、間違いがある模様です。 ソースを読んでみたところ、あやしい部分があるので、少しだけ、挙げてみます。 >for(i=0;i<3;i++){ > for(j=0;j<4;j++){ > printf("%d ",m[i][i]); > } > putchar('\n'); >} の部分ですが、2次元配列mの添え字が、両方iになっている様です。 見える部分の間違いは、これだけみたいです。
- jacta
- ベストアンサー率26% (845/3158)
> 何ででしょうか? そうなるように書いているからです。 > printf("%d ",m[i][i]); この行をよく睨んでみましょう。
お礼
ありがとうございます。 そこでしたね。 気づきませんでした。