C语言转换大智慧数据

来源:互联网 发布:list转换为json字符串 编辑:程序博客网 时间:2024/06/05 06:49

http://funds.bbs.hexun.com/viewarticle.aspx?aid=35686444&bid=7

 

在网上搜到大智慧数据结构如下

大智慧数据文件和数据结构:(假设大智慧股票行情软件安装在D:/gp/dzh目录下)
上海日线存储路径为:D:/gp/dzh/DATA/SHase/Day,文件扩展名为:.day
上海周线存储路径为:D:/gp/dzh/DATA/SHase/week,文件扩展名为: .wek
上海月线存储路径为:D:/gp/dzh/DATA/SHase/month,文件扩展名为: .mnt
深圳日线存储路径为:D:/gp/dzh/DATA/SZnse/Day
深圳周线存储路径为:D:/gp/dzh/DATA/SZnse/week
深圳月线存储路径为:D:/gp/dzh/DATA/SZnse/month
周线,月线格式与日线格式一致.

每一条记录的长度为40字节:
1-4字节为日期,转换为十进制格式如下:19910102
5-8字节=开盘价(元)*1000
9-12字节=最高价(元)*1000
13-16字节=最低价(元)*1000
17-20字节=收盘价(元)*1000
21-24字节=成交金额(元)/1000
25-28字节=成交量(手)
其余12字节未使用

自己写了个C语言的小程序,奉献给大家,希望有人有用。

实现步骤:
定义一个股票价格的数据结构 gpjg

用fread函数读文件
用fprintf函数写文件

程序执行的结果即将二进制文件转换成逗号分割文本文件,由于后缀名为.csv,可以用excel打开,或后续处理。

程序如下:

#include <stdio.h>
#include <stdlib.h>


struct gpjg
{
unsigned long int rq ;
unsigned long int kp ;
unsigned long int zg ;
unsigned long int zd ;
unsigned long int sp ;
unsigned long int cjje ;
unsigned long int cjl ;
unsigned long int l1 ;
unsigned long int l2 ;
unsigned long int l3 ;
}gpjg1;

main()
{FILE *fp;
FILE *fp1;
int i;

if ((fp=fopen("D://gp//dzh//DATA//SZnse//Day//184721.day","rb"))==NULL)
{printf("cannot open file/n");
return;
}

if ((fp1=fopen("184721.csv","w"))==NULL)
{printf("cannot open file/n");
return;
}


for (i=0;i<10000;i++) {
fread(&gpjg1,sizeof(struct gpjg),1,fp);
if feof(fp) { return; }
printf("%lu,%lu,%lu,%lu,%lu,%lu,%lu/n",gpjg1.rq,gpjg1.kp,gpjg1.zg,gpjg1.zd,gpjg1.sp,gpjg1.cjje,gpjg1.cjl);
fprintf(fp1,"%lu,%lu,%lu,%lu,%lu,%lu,%lu/n",gpjg1.rq,gpjg1.kp,gpjg1.zg,gpjg1.zd,gpjg1.sp,gpjg1.cjje,gpjg1.cjl);

}
}

原创粉丝点击