C语言转换大智慧数据
在网上搜到大智慧数据结构如下
大智慧数据文件和数据结构:(假设大智慧股票行情软件安装在D:gpdzh目录下)
上海日线存储路径为:D:gpdzhDATASHaseDay,文件扩展名为:.day
上海周线存储路径为:D:gpdzhDATASHaseweek,文件扩展名为: .wek
上海月线存储路径为:D:gpdzhDATASHasemonth,文件扩展名为: .mnt
深圳日线存储路径为:D:gpdzhDATASZnseDay
深圳周线存储路径为:D:gpdzhDATASZnseweek
深圳月线存储路径为:D:gpdzhDATASZnsemonth
周线,月线格式与日线格式一致.每一条记录的长度为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 ");
return;
}if ((fp1=fopen("184721.csv","w"))==NULL)
{printf("cannot open file ");
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 ",gpjg1.rq,gpjg1.kp,gpjg1.zg,gpjg1.zd,gpjg1.sp,gpjg1.cjje,gpjg1.cjl);
fprintf(fp1,"%lu,%lu,%lu,%lu,%lu,%lu,%lu ",gpjg1.rq,gpjg1.kp,gpjg1.zg,gpjg1.zd,gpjg1.sp,gpjg1.cjje,gpjg1.cjl);}
}
补充:软件开发 , C语言 ,