您的位置:首页 > 编程语言 > C语言/C++

C++二进制文件读取时怎么定位

2011-05-28 17:09 253 查看
这会有点坐不住了,写点自己感兴趣的东西吧。写点快要做课程设计了,大致思路是先把一些简单的工具学了,然后再集中精力把系统拿下来,在课程设计里文件的读写是很重要的,前几天在机房看了一会,发现我看过的使用起来都没C语言中的方便,甚至说对于课程设计中的那些信息来说实现起来很困难,跟老师讨论了一下,老师建议用二进制进行读写,以前C语言中也有二进制读取方式,不过感觉很麻烦所以一直也没用过,现在感觉二进制的读取方式应用在数组里面是目前我接触过的最方便的。

斜面附上代码:

#include<iostream>
#include<fstream>
using namespace std;
struct list{
char course[15];
int score;
int num;
};
int main()
{
list list3[3]={{"computer",90,1},{"mathematics",78,2},{"english",84,3}};
list st;
fstream ff("f6.txt",ios::out|ios::in|ios::binary);
if(!ff){
cout<<"open f6.txt error!"<<endl;
exit(1);
}
for(int i=0;i<3;i++)
ff.write((char*)&list3[i],sizeof(list));//将信息写入f6.txt
ff.seekp(sizeof(list)*2);//定位至第3个信息
ff.read((char*)&st,sizeof(list));//读出放入st
cout<<st.course<<" "<<st.score<<" "<<st.num<<endl;
ff.seekp(sizeof(list)*0);//定位至第一个信息
ff.read((char *)&st,sizeof(list));
cout<<st.course<<" "<<st.score<<" "<<st.num<<endl;
ff.seekp(sizeof(list)*1,ios::beg);//定位至第指针开始位置的下一个信息
ff.read((char *)&st,sizeof(list));
cout<<st.course<<" "<<st.score<<" "<<st.num<<endl;
ff.close();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: