当前位置:编程学习 > C/C++ >>

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语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,