
C言語でプログラムを書いているのですがどうしても解決しない問題があるので質問させてください。
(x座標 y座標 その座標における物理量)の順でスペースで区切られてまとまっているファイル(xyc_l.txt)があります。
1 1 8
2 1 2
3 1 2
・ ・ ・
・ ・ ・
51 1 2
1 2 6
2 2 2
3 2 4
・ ・ ・
・ ・ ・
51 2 5
1 3 6
・ ・ ・
・ ・ ・
・ ・ ・
49 51 9
50 51 3
51 51 8
-----ファイル(xyc_l.txt)の説明-----
上記の説明だとみにくいので
x座標=1 y座標=1 その座標における物理量=8
x座標=2 y座標=1 その座標における物理量=2
x座標=3 y座標=1 その座標における物理量=2
・・・
x座標=51 y座標=1 その座標における物理量=2
x座標=1 y座標=2 その座標における物理量=8
x座標=2 y座標=2 その座標における物理量=2
x座標=3 y座標=2 その座標における物理量=2
・・・
x座標=51 y座標=2 その座標における物理量=5
となっています。
x座標の範囲が[1:51]、y座標の範囲が[1:51]、その座標に対応する物理量(範囲はなし)が記されています。
------目標--------
このファイル(xyc_l.txt)の3列目に当たる座標に対応した物理量をファイルから読み込んで対応する座標に代入したいです。
例えば、座標(x=3,y=1)に対応している物理量2をcoordinate[3][1]=2というように、coordinate[][]とする変数に代入する作業をfor文を用いて51×51分行いたいということです。
自分で作ってみたプログラムを以下に示しておきます。
調べながら作ってみましたがIllegal instruction: 4がエラーとして返されるなどの問題も解決できず
うまく対処できずに困っています。
どなたプログラムに慣れている方、ご教授お願いします。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(void) {
FILE *fp; // FILE型構造体
char fname[] = "xyc_l.txt";
float f1,f2,f3;
int i,j,coordinate[51][51];
double r,A,Count[j][i];
fp = fopen(fname, "r"); // ファイルを開く。失敗するとNULLを返す。
if(fp == NULL) {
printf("%s file not open!\n", fname);
return -1;
}
for (i=1;i<52;i++){
for(j=1;j<52;j++){
while(fscanf(fp, "%f %f %lf", &f1, &f2, &Count[j][i]) != EOF) {
printf("%.1f %.1f %f \n", f1, f2, Count[j][i]);
}
}
}
return 0;
}
No.1ベストアンサー
- 回答日時:
テキストファイルのX,Y座標値がそのまま配列の要素番号に使用できますので、for文は不要だと思います。
配列の要素番号は0から始まるので、代入や読み出し時の要素番号指定は-1しています。
3列目の値を読む変数をintにしていますが、必要であれば対応箇所の型をdouble等に修正してください。
----------
#include<stdio.h>
#define MAX 51
int main(void) {
FILE *fp;
const char fname[] = "xyc_l.txt";
int x,y, data, coordinate[MAX][MAX];
if( (fp = fopen(fname, "r")) == NULL ) {
printf("%s file not open!\n", fname);
return -1;
}
while(fscanf(fp, "%d %d %d", &x, &y, &data) != EOF) {
coordinate[x-1][y-1] = data;
printf("%d %d %d \n", x, y, coordinate[x-1][y-1]);
}
return 0;
}
ありがとうございます。
ところで
gccでコンパイルして
./a.outで実行するとSegmentation fault: 11
のエラーが出るのですが理由が調べてもわかりません。
この原因がお分かりでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(再質問)エクセルのマクロボ...
-
秀丸エディタで、同じ記号で囲...
-
CSSのhtmlへの紐付けについ...
-
Ruby 格納
-
Ruby newメソッド
-
1、Rstudioで回帰直線を求める...
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理 特定の文字以降を...
-
Access VBA エラー2448について
-
VBA テキストボックスを選択状...
-
[コンパイルエラー 修飾子が不...
-
パイソンでのファイルを見るには
-
Excel VBAでループ?続けて処理...
-
VBAで繰り返し持ってきた文章の...
-
verilog HDLについての質問です...
-
フォームのResizeイベントについて
-
teratermで、ファイル名をinput...
-
型の値をDataGridViewセルに変換...
-
MS-DOSバッチファイルコマンド...
-
SQLでテキストボックスの文字を...
-
超初心者です。シングルクォー...
-
パイソンでテキストファイルが...
-
バッチファイル フォルダ名をフ...
-
分数の計算のプログラミングです。
-
テキストboxに数値を入れる...
-
Dreamweaverでtitleタグ内の一...
-
ruby テキストファイル書き出し...
おすすめ情報