前提・実現したいこと
C言語でファイルからデータを読み込み配列に格納し合計を計算するプログラムを作っています。
データは、浮動小数点であり、コンマ区切りで記載されています。
発生している問題・エラーメッセージ
ファイルは開きはしたがうまく読み込めてません。
該当のソースコード
c言語
1#include<stdio.h> 2#include<stdlib.h> 3int main(){ 4 /*ファイルオープン*/ 5 char fname[]="input.txt"; 6 FILE *fp; 7 if((fp=fopen(fname,"r")) == NULL){ 8 printf("%s is not open\n",fname); 9 exit(EXIT_FAILURE); 10 } 11 /*ファイルのデータを格納*/ 12 int nx,ny; 13 int x=0,y=0; 14 fscanf(fp,"%d%d",&nx,&ny); 15 float data; 16 float **matrix_data; 17 printf("nx = %d ny = %d\n",nx,ny); 18 while((fscanf(fp,"%[^,]%f",&data)) != EOF){ 19 printf("ok1\n"); 20 printf("data = %f",data); 21 matrix_data[y][x]=data; 22 x++; 23 if(x==nx){ 24 x=0; 25 y++; 26 } 27 } 28 /*計算*/ 29 int i,j; 30 float xsum,ysum; 31 for(i=0;i<ny;i++){ 32 for(j=0;j<nx;j++){ 33 xsum += matrix_data[j][i]; 34 } 35 } 36 for(i=0;i<ny;i++){ 37 for(j=0;j<nx;j++){ 38 ysum += matrix_data[i][j]; 39 } 40 } 41 /*表示*/ 42 printf("x sum data = %f\ny sum data = %f\n",xsum,ysum); 43 return EXIT_SUCCESS; 44}
困っていること
実行結果
nx = 50 ny = 50
ok1
data = 0.000000
初めのデータすら読み込めません。
while((fscanf(fp,"%[^,]%f",&data)) != EOF)
この記述の仕方が違うのでしょうか?
コンマ区切りなので%[^,]と書いたのですが、ほかに方法などありますか?
データの間に空白があるからでしょうか?
補足情報(FW/ツールのバージョンなど)
windows10
VSCodeです。
//50*50の浮動小数点数が並んでいます。
//1行目がこのデータの行数
//2行目がこのデータの列数
input.txt
50
50
-0.001494466, -0.002262156,・・・・・0.589552, 0.1961814
・ ・
・ ・
・ ・
-0.002359286, -0.003296237,・・・・・0.2205848, 0.1523751
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/18 09:28
2021/10/18 13:40