#include
#include
#include
using namespace std;
struct Node
{
string name;//学生名字
int age;//学生年龄
string key;//学生学号
};
void _save(Node p,int n)
{
FILE fp;
fp=fopen("outfile.dat","wb");//以二进制形式输入文件流
for(int i=0;i
{
fwrite(&p[i],sizeof(Node),1,fp);//输入node字节大小的二进制代码块到文件中,1表示代码块的数量
}
fclose(fp);
}
int main()
{
int n;//学生个数
cout
cin>>n;
Node stu[n];
Node* p=stu;
cout<<"请依次输入学生的姓名,年龄.学号,并用空格分开,不同学生用回车分隔"<
for(int i=0;i
{
cin>>stu[i].name>>stu[i].age>>stu[i].key;
}
_save(p,n);
cout<<"输入任意键退出程序"<<endl;
cin.get();
cin.get();
}
这是写入函数
#include
#include
#include
using namespace std;
struct Node
{
string name;//学生名字
int age;//学生年龄
string key;//学生学号
};
int main()
{
int t,num;
FILE* fp;//
fp=fopen("outfile.dat","rb");
fseek(fp,0,SEEK_END);//指针位置偏移设为0
t=ftell(fp);//将文件长度赋值给t;
num=t/sizeof(Node);//算出结构体个数;
Node stu[num];
for(int i=0;i<num;i++)
{
fread(&stu[i],sizeof(Node),1,fp);//读取十个结构,1表示每次读取的代码块数量
}
fclose(fp);
cout<<stu[0].key;
}
这是读取函数