关于c++的文件流操作 ]/* 编程实现以下功能: (1) 按职工号由小到大的顺序将5个员工的数据
关于c++的文件流操作]/*编程实现以下功能:(1)按职工号由小到大的顺序将5个员工的数据(包括号码,姓名年龄,工资)输出到磁盘文件中保存.(2)从键盘输入两个员工(职工...
关于c++的文件流操作 ]/* 编程实现以下功能: (1) 按职工号由小到大的顺序将5个员工的数据(包括号码,姓名年龄,工资)输出到磁盘文件中保存. (2)从键盘输入两个员工(职工号大于已有的职工号),增加到文件的末尾。 (3)将磁盘文件中的数据全部读入程序然后在显示器显示. (4)从键盘输入一个号码,从文件中查找有无此职工号,如有则显示此职工是第几职工,以及此职工的全部数据, 如果没有就输出"无此人".可以反复多次查询,如果输入查找的职工号为0,就结束查询. 要求:用类和对象数组实现. */ //问题:输出第一个员工数据时正常,但从第二个数据开始都是乱码 #include<iostream> #include<fstream> #include<stdio.h> #define LEN sizeof(struct Worker) using namespace std; struct Worker { int number; char name[100]; int age; int wage; friend ostream & operator<<(ostream &output,Worker &w); }; struct Worker w[5]={{10101,"Li Lin",39,8000},{10102,"Zhang Fun",40,10000},{10104,"Zhang Min",34,7000}, {10103,"Wang Min",34,7000},{10105,"Wang Lin",34,8000}}; ostream & operator<<(ostream &output,Worker &w) { output<<"工号"<<w.number<<endl; output<<"姓名"<<w.name<<endl; output<<"年龄"<<w.age<<endl; output<<"工资"<<w.wage<<endl; return output; } void build_data(struct Worker w)//新建结构体数据 { cout<<"请输入职工数据:"<<endl; cout<<"工号:"; cin>>w.number; cout<<"姓名(请勿用空格简短):"; cin>>w.name; cout<<"年龄:"; cin>>w.age; cout<<"工资:"; cin>>w.wage; } void save_to_file(struct Worker w)//向磁盘文件添加数据的函数 { ofstream outfile("work.dat",ios::out|ios::binary); if(!outfile) { cerr<<"新数据储存失败!"<<endl; abort(); } outfile.seekp(0,ios::end); outfile.write((char *)&w,sizeof(w)); outfile.close(); cout<<"新数据储存完毕。"<<endl; } Worker seek(int n) { struct Worker w; ifstream infile("work.
展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询