急问:将txt文件中的数据保存在二维数据里!解决方法
急问:将txt文件中的数据保存在二维数据里!
生成的已经保存在txt文件中的数据如下:
45.3680200427468 15.1191229015105 58.6355690654011 69.1673687318070
68.6732185041066 43.9845500378346 54.7937290823995 55.9530499802563
45.2761771426101 35.9990290723335 50.5691579981557 44.9158774843393
61.9262047887758 23.1900306124136 27.3274749617222 50.3891264767777
c语言程序如下:
#include<stdio.h>
#include<math.h>
#define N 4 //定义二维数组的大小
void main( )
{
FILE *fp;
float a[N][N]={0}; //是否要定义为float型呢?
int i=0,j=0;
char bufs[7];
fp=fopen("data.txt","rb");
//文件定位
fseek(fp,0l,0);
while(!feof(fp))
{ //偏移量
fseek(fp,4l,SEEK_CUR);
//读取文件块
fgets(bufs,17,fp);
a[i][j]=atof(bufs);
//计算下标
j++;
if(j>N-1){i++;j=0;fseek(fp,1l,SEEK_CUR);}
if(i>N-1) break;
}
//将a[i][j]全部保留两位有效数字
for(i=0;i<N;i++)
for(j=0;j<N;j++)
a[i][j]=float(a[i][j],2);//保留两位有效数字,这句该怎么写?
//输出
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%.2lf ",a[i][j]);
printf("\n");
}
//关闭文件
fclose(fp);
}
请帮忙修改上面的代码。
非常感谢!
------解决方案--------------------
每行4个浮点数,用fscanf不更方便。
------解决方案--------------------
生成的已经保存在txt文件中的数据如下:
45.3680200427468 15.1191229015105 58.6355690654011 69.1673687318070
68.6732185041066 43.9845500378346 54.7937290823995 55.9530499802563
45.2761771426101 35.9990290723335 50.5691579981557 44.9158774843393
61.9262047887758 23.1900306124136 27.3274749617222 50.3891264767777
c语言程序如下:
#include<stdio.h>
#include<math.h>
#define N 4 //定义二维数组的大小
void main( )
{
FILE *fp;
float a[N][N]={0}; //是否要定义为float型呢?
int i=0,j=0;
char bufs[7];
fp=fopen("data.txt","rb");
//文件定位
fseek(fp,0l,0);
while(!feof(fp))
{ //偏移量
fseek(fp,4l,SEEK_CUR);
//读取文件块
fgets(bufs,17,fp);
a[i][j]=atof(bufs);
//计算下标
j++;
if(j>N-1){i++;j=0;fseek(fp,1l,SEEK_CUR);}
if(i>N-1) break;
}
//将a[i][j]全部保留两位有效数字
for(i=0;i<N;i++)
for(j=0;j<N;j++)
a[i][j]=float(a[i][j],2);//保留两位有效数字,这句该怎么写?
//输出
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%.2lf ",a[i][j]);
printf("\n");
}
//关闭文件
fclose(fp);
}
请帮忙修改上面的代码。
非常感谢!
------解决方案--------------------
每行4个浮点数,用fscanf不更方便。
------解决方案--------------------
- C/C++ code
//data.txt //45.3680200427468 15.1191229015105 58.6355690654011 69.1673687318070 //68.6732185041066 43.9845500378346 54.7937290823995 55.9530499802563 //45.2761771426101 35.9990290723335 50.5691579981557 44.9158774843393 //61.9262047887758 23.1900306124136 27.3274749617222 50.3891264767777 #include<stdio.h> #define N 4 //定义二维数组的大小 FILE *fp; double a[N][N]; int i,j; void main() { fp=fopen("data.txt","r"); for(i=0;i<N;i++) for(j=0;j<N;j++) fscanf(fp,"%lf",&a[i][j]); fclose(fp); for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%.2lg ",a[i][j]);//保留两位有效数字输出 } printf("\n"); } } //45 15 59 69 //69 44 55 56 //45 36 51 45 //62 23 27 50