//删除文件中的记录 tododebug p286
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
struct student{
int no;
char name[20];
double degree;
};
struct student stu[3] = {1,"wanghua",95.5,
16,"liguoqiang",82.5,
8,"sunliyiong",76};
int main(){
int i;
fstream infile,outfile;
outfile.open("data.dat",ios::out|ios::trunc|ios::binary);
if(!outfile){
cout<<"data.dat文件不能打开"<<endl;
abort();
}
for(i=0;i<3;i++){
outfile.write((char *)&stu[i],sizeof(stu[i]));
}
outfile.close();
cout<<"文件data.dat的记录如下:"<<endl;
infile.open("data.dat",ios::in|ios::binary);
for(i=0;i<3;i++){
infile.read((char *)&stu[i], sizeof(student));
cout<<stu[i].no<<"\t"<<stu[i].name<<"\t"<<stu[i].degree<<endl;
}
infile.close();
outfile.open("data.dat",ios::out|ios::trunc|ios::binary);
for(i=0;i<3;i++)
if(i!=1)
outfile.write((char *)&stu[i],sizeof(stu[i]));
outfile.close();
cout<<"删除第二个记录后的文件内容:"<<endl;
infile.open("data.dat",ios::in|ios::binary);
for(i=0;i<2;i++){
infile.read((char *)&stu[i],sizeof(student));
cout<<stu[i].no<<"\t"<<stu[i].name<<"\t"<<stu[i].degree<<endl;
}
infile.close();
return 0
}
//删除文件中的记录 tododebug p286
//
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
struct student{
int no;
char name[20];
double degree;
};
int main(){
int i;
student stud;
fstream file;
file.open("data.dat",ios::in|ios::binary);
cout<<"输入记录号(从1开始):";
cin>>i;
int pos = (i-1)*sizeof(student);
file.seekg(pos);
file.read((char *)&stud,sizeof(student));
cout<<stud.no<<"\t"<<stud.name<<"\t"<<stud.degree<<endl;
file.close();
return 0;
}