C++问题,编译没错,可是不能运行

来源:百度知道 编辑:UC知道 时间:2024/06/04 13:39:49
编程实现以下功能:
(1)按职工号由小到大的顺序将5个员工的数据(包括职工号、姓名、年龄、工资)输出到磁盘文件中保存。
(2)从键盘输入1个员工的数据(职工号大于已有的职工号),增加到文件的末尾。
(3)输出文件中全部职工的数据。
(4)从键盘输入一个号码,从文件中查找有无此职工号,如有则显示此职工的全部数据。如果没有,就输出“查无此人”。可以反复多次查询,如果输入查找的职工号为0,就结束查询。
我的程序是没错误提示,不过在运行时候,会出现open error!错误,请高手指点。回答对了有
#include <iostream>
#include <fstream>
using namespace std;
struct staff

{
int num;
char name[20];
int age;
double pay;
};

int main()
{
staff staf[7]={101,"Li",34,1200,102,"Wang",23,1300,103,"Fun",54,2000,104,"Xue",45,1700,105,"Ling",39,2100},staf1;
fstream iofile("staff.dat",ios::in|ios::out|ios::binary);
if(!iofile)
{cerr<<"open error!"<<endl;
abort();
}

int i,m,num;
cout<<"Five staff :"<<endl;
for(i=0;i<5;i++)
{
cout<<staf[i].num<<" &

在fstream iofile("staff.dat",ios::in|ios::out|ios::binary);前
加上
ofstream ofile("staff.dat",ios::binary);
ofile.close();
先建立那个2进制文件就可以了.
不过你的程序在查找员工号及输出那部分有明显问题,输入已有号码时为死循环,输入没有的员工号时当机,再好好改改.

fstream iofile("staff.dat",ios::in|ios::out|ios::binary);
if(!iofile)
{cerr<<"open error!"<<endl;
abort();
}

根据你这一段来判断,被读取的文件staff.dat首先必须和你的cpp文件属于同一个文件夹,其次必须为可读取状态....楼主最好关闭可能使用该文件的程序后再来执行方可

你的staff.dat文件是否存在运行目录下。
文件是否为可读。