有木有高手可以帮忙看看,二进制文件写入正常读出乱码。。

rsflyfish 2012-03-14 05:46:39
文件写入,数组创建完毕的时候数据正常,在存入文件之后,再取出,前几十个数据没有问题,但之后就全成乱码了这是怎么回事?

以下是程序的代码,有没有高手能帮我看看是怎么回事。。。在下感激不尽。。

#include<iostream>
#include<fstream>
using namespace std;
struct course_info //课程信息
{
short int course_ID; //课程编号
char course[20]; //课程名称
char course_intro[360]; //课程简短介绍
short int credit; //学分
};
int main()
{
//** 创建部分 **//
course_info * course_i_Create = new course_info[200];
for ( int i = 0 ; i < 200 ; i ++ )
{
int ID_temp = 100+rand()%899;
course_i_Create[i].course_ID = ID_temp;
course_i_Create[i].credit = 1+rand()%7;
for ( int j = 0 ; j < 20 ; j ++ )
{
course_i_Create[i].course[j]=NULL;
}
for ( int j = 0 ; j < 360 ; j ++ )
{
course_i_Create[i].course_intro[j] = NULL;
}
for ( int j = 0 ; j < 10 ; j ++ )
{
course_i_Create[i].course[j] = 'a'+rand()%25;
}
for ( int j = 0 ; j < 180 ; j ++ )
{
course_i_Create[i].course_intro[j]='a'+rand()%25;
}
}
ofstream file_Create("d:\\course_info.dat",ios::binary|ios::out);
int j = 0 ; file_Create.seekp(0,ios::beg);
do{
file_Create.write((char*)&course_i_Create[j],sizeof(course_info)); j ++;
}while(j<199);
file_Create.close();
system("pause");
//** 读取部分 **//
course_info * course_i = new course_info [300];
cout<<"Loading..."<<endl;
ifstream file("D:\\course_info.dat",ios::binary|ios::in);
file.seekg(0,ios::beg);
int count = 0;
while (!file.eof())
{
file.read((char*)&course_i[count],sizeof(course_info));
count++;
}
file.close();
cout<<"File Loaded"<<endl;
for (int i = 0 ; i < count ; i ++ )
{
cout<<course_i[i].course<<endl;
cout<<endl;
}
cout<<count<<endl;
system("pause");
}
...全文
129 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rsflyfish 2012-03-14
  • 打赏
  • 举报
回复
弄好了,十分感谢~
merlinfang 2012-03-14
  • 打赏
  • 举报
回复
while (!file.eof())
{
file.read((char*)&course_i[count],sizeof(course_info));
if(!file.eof()) //加上这句判断下
count++; //count多加了1,
}

65,186

社区成员

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

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