二进制文件读取到结构体的一个问题

yclz 2006-07-27 10:08:10
文件内容为二进制,现在要读到一个长度为168的结构体中,我用
结构体名 Index[10];
i = 0;
while(i < 10)
{
FileIn.seekg(sizeof(Index[i]) * i);
FileIn.read((char*)&Index[i], 168);
i++;
}
这种方法读,第一条只能读到期32个字节,以后的每条都读不到,是怎么回事啊?
...全文
239 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cici2006 2006-07-27
  • 打赏
  • 举报
回复
FileIn.seekg(sizeof(Index[i]) * i);

你为什么要跳呢?
gohan 2006-07-27
  • 打赏
  • 举报
回复
从index[0]到index[9]都正常
gohan 2006-07-27
  • 打赏
  • 举报
回复
我没用过二进制的文件,一般的文本好像没这个问题啊
#include <iostream>
#include <fstream>
using namespace std;


struct {
char str[168];
char c;
} Index[10];

main(){


ifstream FileIn("c:\\a.txt");
int i = 0;
while(i < 10)
{
Index[i].c='\0';
FileIn.seekg(sizeof(Index[i]) * i);
FileIn.read((char*)&Index[i], 168);
i++;
}
cout<<Index[1].str;



}

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧