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

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");
}
...全文
81 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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,
}
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2012-03-14 05:46
社区公告
暂无公告