标题:如何用C将.txt的double数据读进来,并存放在二维数组中
只看楼主
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
 问题点数:0 回复次数:13 
如何用C将.txt的double数据读进来,并存放在二维数组中
我这里请教一下:如何用C将.txt的double数据读进来(数据是二维的)并存放在二维数组中,
以便我后面对这些数据进行处理?
先谢了!
搜索更多相关主题的帖子: double txt 数据 
2008-03-09 21:53
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
得分:0 
请高手帮帮忙
请教:如何用C将.txt的double数据读进来(数据是二维的)并存放在二维数组中,
以便我后面对这些数据进行处理?
2008-03-10 10:05
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
你试着写一下...把基本框架写一下..如果有问题大家帮你改.....

学习需要安静。。海盗要重新来过。。
2008-03-10 10:12
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
得分:0 
这样写的
本程序有个data.txt的附件:(不会意思,没找到上传附件的按钮)
    5.1000    3.5000    1.4000    0.2000
    4.9000    3.0000    1.4000    0.2000
    4.7000    3.2000    1.3000    0.2000
    4.6000    3.1000    1.5000    0.2000
    我知道读文件那里和往数组里放有点问题,但不知道怎么改?请大家帮帮忙
#include<stdio.h>
main()
{FILE *fp;
double a[5][4];
int i,j;
fp=fopen("data.txt","rb");
while(!feof(fp))
{
    for (i=0;i<5;i++)
        for(j=0;j<4;j++)
        {fseek(fp,sizeof(double),0);
           
        fread(&a[i][j],sizeof(double),1,fp);}
}
fclose(fp);

    for (i=0;i<5;i++)
        for(j=0;j<4;j++)
            
        {if(j%3==0)
            printf("\n");
        printf("%d",a[i][j]);
        }

}
2008-03-10 11:25
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
文件读入有问题...你的指针是按sizeof(double)往下读的..所以读到的数据可能有问题.......我没想到怎么改..现在忙写论文呢..等晚上有高手来帮你吧

学习需要安静。。海盗要重新来过。。
2008-03-10 13:37
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
得分:0 
5.1000(???)3.5000    1.4000    0.2000
4.9000    3.0000    1.4000    0.2000
4.7000    3.2000    1.3000    0.2000
4.6000    3.1000    1.5000    0.2000

#include<stdio.h>
main()
{FILE *fp;
double a[5][4];
int i,j;
fp=fopen("data.txt","rb");
bufs[7];
int x=0,y=0;
while(!feof(fp))
{
   memset(bufs,0,7);
   fread(bufs,1,6,fp);  //读取一个数据位,数据长度为6个字符
   a[x][y]=atof(bufs);  //保存到数组中
   y++; if ( y > 3 ) { y=0; x++; }   

   if ( y != 0 ) //表示还未读到当前行最后一个数据未
   {
     fread(bufs,1,???,fp) //其中???是数据与数据之间的空格长度,你
                //给的数据好象是3,但我不能确定
  }
  else
  {   
    if ( !feof(fp) ) //确保不是最后一行,因为最后一行没有换行
    {
       fread(bufs,1,1,fp); //每行最后一未是换行符,只有1个字符
    }
  }
  fclose(fp);   

}
收到的鲜花
  • sunkaidong2008-03-10 16:27 送鲜花  6朵  

2008-03-10 15:56
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
谢谢楼上的...数据之间有不定长的空格很麻烦....

学习需要安静。。海盗要重新来过。。
2008-03-10 16:26
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
得分:0 
fp=fopen("data.txt","rb");
文本文件用二进制打开使用
是怎么使用的
每个字符当个字节,4.6000代表六个字节,这样理解对不?

在路上走,看见了C,从此爱上了她
2008-03-10 19:28
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
得分:0 
还是有没调通
说明一下两个数据之间的空格长度是4。
那么该把???改为4对吧?
另外:
请问上面给的答案是不是要加上#include <mem.h>,但是加完之后会有一个错误
e:\vc++实验\irisnew\irisnew.c(3) : fatal error C1083: Cannot open include file: 'mem.h': No such file or directory
2008-03-11 10:59
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
我以前写过一个我空间里面有..用写的....要知道在txt里面都是以字符存在的...仅仅用DOUBLE的话...会读到空格....会读到错误数据...

学习需要安静。。海盗要重新来过。。
2008-03-11 12:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-202701-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021969 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved