istream& read(char *buffer,int len); ostream& write(const char * buffer,int len);
a. write(p1,50); b. read(p2,30);
#include <fstream>
using namespace std;
struct student
{
char name[20];
int num;
int age;
char sex;
};
int main( )
{
student stud[3]={"Li",1001,18,'f',"Fun",1002,19,'m',"Wang",1004,17,'f'};
ofstream outfile("stud.dat",ios::binary);
if(!outfile)
{
cerr<<"open error!"<<endl;
abort( );//退出程序
}
for(int i=0;i<3;i++)
outfile.write((char*)&stud[i],sizeof(stud[i]));
outfile.close( );
return 0;
}
outfile.write((char*)&stud[0],sizeof(stud));
#include <fstream>
using namespace std;
struct student
{
string name;
int num;
int age;
char sex;
};
int main( )
{
student stud[3];
int i;
ifstream infile("stud.dat",ios::binary);
if(!infile)
{
cerr<<"open error!"<<endl;
abort( );
}
for(i=0;i<3;i++)
infile.read((char*)&stud[i],sizeof(stud[i]));
infile.close( );
for(i=0;i<3;i++)
{
cout<<"NO."<<i+1<<endl;
cout<<"name:"<<stud[i].name<<endl;
cout<<"num:"<<stud[i].num<<endl;;
cout<<"age:"<<stud[i].age<<endl;
cout<<"sex:"<<stud[i].sex<<endl<<endl;
}
return 0;
}
NO.1 name: Li num: 1001 age: 18 sex: f NO.2 name: Fun num: 1001 age: 19 sex: m NO.3 name: Wang num: 1004 age: 17 sex: f
infile.read((char*)&stud[0],sizeof(stud));
#include <fstream>
using namespace std;
struct student
{
int num;
char name[20];
float score;
};
int main( )
{
student stud[5]={1001,"Li",85,1002,"Fun",97.5,1004,"Wang",54,1006,"Tan",76.5,1010,"ling",96};
fstream iofile("stud.dat",ios::in|ios::out|ios::binary);
//用fstream类定义输入输出二进制文件流对象iofile
if(!iofile)
{
cerr<<"open error!"<<endl;
abort( );
}
for(int i=0;i<5;i++) //向磁盘文件输出个学生的数据
iofile.write((char *)&stud[i],sizeof(stud[i]));
student stud1[5]; //用来存放从磁盘文件读入的数据
for(int i=0;i<5;i=i+2)
{
iofile.seekg(i*sizeof(stud[i]),ios::beg); //定位于第,2,4学生数据开头
//先后读入个学生的数据,存放在stud1[0],stud[1]和stud[2]中
iofile.read((char *)&stud1[i/2],sizeof(stud1[0]));
//输出stud1[0],stud[1]和stud[2]各成员的值
cout<<stud1[i/2].num<<" "<<stud1[i/2].name<<" "<<stud1[i/2].score<<endl;
}
cout<<endl;
stud[2].num=1012; //修改第个学生(序号为)的数据
strcpy(stud[2].name,"Wu");
stud[2].score=60;
iofile.seekp(2*sizeof(stud[0]),ios::beg); //定位于第个学生数据的开头
iofile.write((char *)&stud[2],sizeof(stud[2])); //更新第个学生数据
iofile.seekg(0,ios::beg); //重新定位于文件开头
for(int i=0;i<5;i++)
{
iofile.read((char *)&stud[i],sizeof(stud[i])); //读入个学生的数据
cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
}
iofile.close( );
return 0;
}
1001 Li 85(第个学生数据) 1004 Wang 54 (第个学生数据) 1010 ling 96 (第个学生数据) 1001 Li 85 (输出修改后个学生数据) 1002 Fun 97.5 1012 Wu 60 (已修改的第个学生数据) 1006 Tan 76.5 1010 ling 96
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有