删除文件中的记录 tododebug p286

//删除文件中的记录  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;
}



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务