打印

请教C对TXT文件有规律的数据读出并通过程序运算

[复制链接]
1624|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
odqqdo|  楼主 | 2008-11-30 21:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, ce, ICE, ic, os
这是我编的,没成功

#include <stdio.h>
#define   days   2  /*天数*/ 
  
    struct share_price  /*定义结构体股价*/ 
    {      
        char date[11];     /*日期*/      
        char week[2];        
        float costliness[1];   /*高价 */ 
        float low_price [1];   /*低价*/
    }
    name [days]; 
      
    main( )
    { 
        int i; 
           FILE *fp;    
         fp=fopen("C:WINLibTCTable.txt","rb") ;
  for (i=0;i<days;i++)   
   { fread(&name,sizeof(struct share_price),1,fp); /* 从文件成块读*/    
       printf("%-11s %2s  %f  %f ",name.date,name.week,name.costliness,name.low_price); /* 显示到屏幕*/    
   }   
   fclose(fp);


文本文件的格式如下:
2003-09-23,二    9.72        9.55        

2003-09-24,三    9.87        9.68        

2003-09-25,四    9.86        9.57        

2003-09-26,五    10.00        9.57        

2003-09-29,一    9.86        9.65        

2003-09-30,二    9.78        9.30        

2003-10-08,三    9.87        9.35        

2003-10-09,四    9.79        9.55        

2003-10-10,五    9.89        9.46        

2003-10-13,一    10.31        9.77        

2003-10-14,二    10.22        9.96        

2003-10-15,三    10.34        10.03        

2003-10-16,四    10.23        9.81        

2003-10-17,五    9.96        9.73        

2003-10-20,一    9.89        9.54        

2003-10-21,二    9.74        9.60        

2003-10-22,三    10.39        9.72        

2003-10-23,四    10.51        10.13    
......
现在读出都还没搞定

相关帖子

沙发
sodwell| | 2008-12-1 08:44 | 只看该作者

re

因为你的数据每行结束都有回车
所以你这样读 不行 
函数一个字母字母的读 存到一个数组 读到回车结束  然后对数组显示出来就行了  稍微麻烦点    反正我一直是这样搞的



使用特权

评论回复
板凳
zq1987731| | 2008-12-2 19:47 | 只看该作者

TXT文件要注意的一些地方

TAB和空格是不一样的(ASCII):
TAB  -- 0x09
空格 -- 0x20
但如果是4个空格,1个TAB,你【看上去】却是一样的...
另外TXT的每行均以0D 0A为结尾(回车换行的意思)
从TXT的一行中读取1组结构体的所有成员,这和你的TXT格式也有一定的关系,例如不同结构体成员两两之间只有一个空格,很规范的形式(虽然会对不齐)这样的很容易判定并读出,但如果TXT本身为了对齐以及美观而增加缩进及空格,甚至结构体成员自身也用空格及TAB分成几部分...就需要动动脑筋了

使用特权

评论回复
地板
mohanwei| | 2008-12-2 20:23 | 只看该作者

fscanf(),或者先fread()再sscanf()都是不错的选择

使用特权

评论回复
5
ODQQDO| | 2008-12-2 20:56 | 只看该作者

多谢各位,我用fscanf(),再试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

62

帖子

0

粉丝