首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

急问:将txt文件中的数据保存在二维数据里!解决方法

2012-03-28 
急问:将txt文件中的数据保存在二维数据里!生成的已经保存在txt文件中的数据如下:45.368020042746815.11912

急问:将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 

热点排行