读书人

急问:将txt文件中的数据保存在二维数

发布时间: 2012-03-28 15:40:03 作者: rapoo

急问:将txt文件中的数据保存在二维数据里!
生成的已经保存在txt文件中的数据如下:
45.368020042746815.119122901510558.635569065401169.1673687318070
68.673218504106643.984550037834654.793729082399555.9530499802563
45.276177142610135.999029072333550.569157998155744.9158774843393
61.926204788775823.190030612413627.327474961722250.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 

读书人网 >C语言

热点推荐