<备忘>关于结构体

 结构体一旦定义,就是一种数据类型,相同类型的结构体可以互相赋值。

比如说结构体

struct TestStruct{
 int b[3];
 TestStruct* next;
};

 

那么如果我们定义了一个结构体指针

TestStruct*  pTS;

并为其分配了一块内存,然后将变量都赋值。

之后如果我们再定义

TestStruct     ts;

那么 ts = *pTS;

之后ts中的值将与*pTS中一模一样。

 

总之,结构体就是一种数据类型,定义了之后就可以像预定义类型一样的使用了。

帮我用以下方法读取通达信的内容在交易备忘录中使用:import struct # 用于解析二进制数据 def read_tdx_day_file(file_path): data_list = [] with open(file_path, "rb") as f: while True: # 每次读取32字节(一条记录) record = f.read(32) if not record: # 读取完毕 break # 按通达信结构解析:i=整型,f=浮点型(<表示小端序) unpacked = struct.unpack("<iffffiix", record) # 封装数据 data = { "date": str(unpacked[0]), # 日期:如20251216 "open": round(unpacked[1], 2), # 开盘价 "high": round(unpacked[2], 2), # 最高价 "low": round(unpacked[3], 2), # 最低价 "close": round(unpacked[4], 2), # 收盘价 "volume": unpacked[5], # 成交量 "amount": unpacked[6] # 成交额 } data_list.append(data) return data_list # 调用示例:读取浦发银行日线数据 file_path = r"C:\new_tdx\vipdoc\sh\lday\sh600000.day" day_data = read_tdx_day_file(file_path) # 打印前5条数据 for item in day_data[:5]: print(item) 二、C++ 读取文件(补充) 1. 文本文件读取 cpp 运行 #include <iostream> #include <fstream> #include <string> using namespace std; int main() { // 打开文本文件 ifstream file("test.txt"); if (!file.is_open()) { // 判断文件是否打开成功 cout << "文件打开失败" << endl; return 1; } // 逐行读取 string line; while (getline(file, line)) { cout << line << endl; } file.close(); // 关闭文件 return 0; } 2. 二进制文件读取(以通达信.day为例) cpp 运行 #include <iostream> #include <fstream> #include <cstring> using namespace std; // 定义通达信日线数据结构(32字节) struct TDXDayData { int date; // 日期 float open; // 开盘价 float high; // 最高价 float low; // 最低价 float close; // 收盘价 int volume; // 成交量 int amount; // 成交额 char reserve[4];// 预留(4字节) }; int main() { const char* file_path = "C:\\new_tdx\\vipdoc\\sh\\lday\\sh600000.day"; ifstream file(file_path, ios::binary); // 二进制模式打开 if (!file.is_open()) { cout << "文件打开失败" << endl; return 1; } TDXDayData data; // 每次读取32字节(一个结构体) while (file.read((char*)&data, sizeof(TDXDayData))) { cout << "日期:" << data.date << " 开盘价:" << data.open << " 收盘价:" << data.close << " 成交量:" << data.volume << endl; } file.close(); return 0; }
最新发布
12-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值