c语言读文件实例

#include <stdio.h>

//in.txt:in 2 3 4 3 4 5

//文件到矩阵中,整数时候才对为什么?小数的时候不对?
int main()
{

int *data=new int[2*3];
FILE *fp=fopen("in.txt","r");
if(!fp)
{
 printf("can't open file\n");
 return -1;
}
while(!feof(fp))
{
 for(int i=0;i<2;i++)
  for(int j=0;j<3;j++)
  {
   fscanf(fp,"%d", (data+i*3+j));
   printf("% d",*(data+i*3+j));
  }

 
}
printf("\n");
fclose(fp);

getchar();
return 0;
}


%%%%%%%%%%%%%%%%%%%%%下面是一个例子,读进来数据赋给结构体数组

typedef struct
{
 double utcStart;
 double utcEnd;
 int fLeaps;
} LEAP;

int main(int argc,char* argv[])
{
 FILE *fp;
 fp= fopen(".\\Data\\leaps.txt","r" );//相对路径
 if(!fp)
 {
  printf("can't open file\n");
  return -1;
 }
    int  m_LeapNums=0;
 fscanf (fp,"%d",&m_LeapNums);//首先读进来数据的个数,后面定义时候要用


 LEAP *m_pLeaps=new LEAP[m_LeapNums*3];
 int i=0;
 while(!feof(fp))
 {

  fscanf (fp,"%lf", &(m_pLeaps[i].utcStart));
  fscanf (fp,"%lf", &(m_pLeaps[i].utcEnd));
  fscanf (fp,"%d", &(m_pLeaps[i].fLeaps));
  
  i++;
 }
 fclose(fp); 
 
  printf("%d", m_LeapNums);
  printf("%lf\n",m_pLeaps[0].utcStart);
  printf("%lf\n", m_pLeaps[1].utcEnd);
  printf("%d\n",m_pLeaps[2].fLeaps);

  delete []m_pLeaps ;
  m_pLeaps=NULL;
  getchar();
  return 0;

}

数据:

24
2441317.5 2441499.5 10
2441499.5 2441683.5 11
2441683.5 2442048.5 12
2442048.5 2442413.5 13
2442413.5 2442778.5 14
2442778.5 2443144.5 15
2443144.5 2443509.5 16
2443509.5 2443874.5 17
2443874.5 2444239.5 18
2444239.5 2444786.5 19
2444786.5 2445151.5 20
2445151.5 2445516.5 21
2445516.5 2446247.5 22
2446247.5 2447134.5 23
2447134.5 2447709.5 24
2447709.5 2447925.5 25
2447925.5 2448804.5 26
2448804.5 2449169.5 27
2449169.5 2449534.5 28
2449534.5 2450083.5 29
2450083.5 2450630.5 30
2450630.5 2451179.5 31
2451179.5 2453736.5 32
2453736.5 0         33


总是会碰到一个问题:如何在不知道数据大小的时候,把文档中的数据读进来,赋给数组变量。在给数据分配内存的时候(用new)必须知道数组的大小,就必须知道要读进来的数据有多少,是这样吗?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值