文件部分-----(6 )二进制文件读写操作----将学生信息写入到文件中,再从文件中读取信息

二进制文件读写操作----将学生信息写入到文件中,再从文件中读取信息

(1)将一学生信息以二进制方式存储到文件中

/*将一学生信息写入到文件中进行存储*/
#include <iostream>   
#include <fstream>   
using namespace std;  
struct student  
{  
    char studentID[20];    //学号   
    char name[20];  //姓名   
    char sex;       //性别   
    int age;        //年龄   
};  

int main()
{
  ofstream outFile("gyy5.txt",ios::out|ios::binary); //建立文件输出流,以二进制方式开打文件进行关联
  if(!outFile)
  {
    cout<<"文件打开失败!退出程序..."<<endl;
	exit(1);  
  }
  
  student s;
  cout<<"请输入要存储的学生信息:"<<endl;
  cout<<"学号:";
  cin>>s.studentID;
  cout<<"姓名:";
  cin>>s.name;
  cout<<"性别:";
  cin>>s.sex;
  cout<<"年龄:";
  cin>>s.age;

  outFile.write((char *)&s,sizeof(s));  //往文件中存储数据
  cout<<"数据存储成功"<<endl;

  outFile.close(); //关闭文件流所关联的文件
  return 0;
}
 


(2)从刚才建立的文件中读取数据在屏幕上显示

 

/*从文件中将一学生信息读出显示在屏幕上*/
#include <iostream>   
#include <fstream>   
using namespace std;  
struct student  
{  
    char studentID[20];    //学号   
    char name[20];  //姓名   
    char sex;       //性别   
    int age;        //年龄   
};  

int main()
{
  ifstream inFile("gyy5.txt",ios::in|ios::binary); //建立文件输入流,以二进制方式开打文件进行关联
  if(!inFile)
  {
    cout<<"文件打开失败!退出程序..."<<endl;
	exit(1);  
  }
  
  student s;
  inFile.read((char *)&s,sizeof(s));  //从文件中读取sizeof(s)字节大小的内容存入到s中


  cout<<"显示读取的学生信息:"<<endl;
  cout<<"学号:"<<s.studentID<<endl;
  cout<<"姓名:"<<s.name<<endl;
  cout<<"性别:"<<s.sex<<endl;
  cout<<"年龄:"<<s.age<<endl;
  
  cout<<"数据读取成功"<<endl;

  inFile.close(); //关闭文件流所关联的文件
  return 0;
}
 


 

(3)将写、读放到一个文件中,用fstream即可以进行二进制文件的输入也可以输出

/*先将一学生信息写入到文件中进行存储*/
/*再从该文件中将一学生信息读出显示在屏幕上*/

#include <iostream>   
#include <fstream>   
using namespace std;  
struct student  
{  
    char studentID[20];    //学号   
    char name[20];  //姓名   
    char sex;       //性别   
    int age;        //年龄   
};  

int main()
{
	fstream myFile("gyy6.txt",ios::in|ios::out|ios::binary); //建立文件流,即可以输入也可以输出,以二进制方式开打文件进行关联
  
  if(!myFile)
  {
    cout<<"文件打开失败!退出程序..."<<endl;
	exit(1);  
  }
  
  student s;
  cout<<"请输入要存储的学生信息:"<<endl;
  cout<<"学号:";
  cin>>s.studentID;
  cout<<"姓名:";
  cin>>s.name;
  cout<<"性别:";
  cin>>s.sex;
  cout<<"年龄:";
  cin>>s.age;

  myFile.write((char *)&s,sizeof(student));  //往文件中存储数据
  cout<<"数据存储成功"<<endl<<endl<<endl;;



  student s1;
  myFile.seekg(0,ios::beg); //读指针定位到文件开头
  myFile.read((char *)&s1,sizeof(student));  //从文件中读取sizeof(student)字节大小的内容存入到s1中


  cout<<"显示读取的学生信息:"<<endl;
  cout<<"学号:"<<s1.studentID<<endl;
  cout<<"姓名:"<<s1.name<<endl;
  cout<<"性别:"<<s1.sex<<endl;
  cout<<"年龄:"<<s1.age<<endl;
  
  cout<<"数据读取成功"<<endl;

  myFile.close(); //关闭文件流所关联的文件

  return 0;
}
 




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值