注册 登录
编程论坛 C++教室

信息管理

王文倩 发布于 2013-06-13 09:28, 420 次点击
#include<iostream>
#include<fstream>
using namespace std;
struct staff
{
    int num;
    char name[20];
    int age;
    double pay;
};
int main()
{
    staff staff[7]={2101,"li",34,1203,2104,"wang",23,674.5,2108,"fun",54,778,3006,"xue",45,476.5,5101,"ling",39,656.6
    },staff1;
    fstream iofile("staff.dat",ios::in|ios::out|ios::binary);
    if(!iofile)
    {
        cerr<<"open staff.dat error!"<<endl;
        exit(1);
    }
    int i,m,num;
    cout<<"Five staff:"<<endl;
    for(i=0;i<5;i++)
    {
        cout<<staff[i].num<<staff[i].name<<staff[i].age<<staff[i].pay<<endl;
        iofile.write((char *)&staff[i],sizeof(staff[i]));
    }
    cout<<"Please input data you want insert:"<<endl;
    iofile.seekp(0,ios::end);
    for(i=0;i<2;i++)
    {
        cin>>staff1.num>>staff1.name>>staff1.age>>staff1.pay;
        iofile.write((char *)&staff1,sizeof(staff1));
    }
    cout<<"Senven staff:"<<endl;
    iofile.seekg(0,ios::beg);
    for(i=0;i<7;i++)
    {
        iofile.read((char *)&staff[i],sizeof(staff[i]));
        cout<<staff[i].num<<staff[i].name<<staff[i].age<<staff[i].pay<<endl;
    }
    bool find;
    cout<<"enter number you want search ,enter 0 to stop"<<endl;

    cin>>num;
    while(num)
    {
        find=false;
        iofile.seekg(0,ios::beg);
        for(i=0;i<7;i++)
        {
            iofile.read((char *)&staff[i],sizeof(staff[i]));
            if(num==staff[i].num)
            {
                m=iofile.tellg();
                cout<<num<<"is No."<<m/sizeof(staff1)<<endl;
                cout<<staff[i].num<<""<<staff[i].name<<""<<staff[i].age<<""<<staff[i].pay<<endl;
                find=true;
                break;
            }
        }
        if(!find)
        cout<<"cant't find"<<num<<endl;
        cout<<"enter number you want search,enter 0 to stop.";
        cin>>num;
    }
    iofile.close();
    return 0;
}
为什么老是出现
open staff.dat error!
Press any key to continue一直解决不了,求帮忙
4 回复
#2
rjsp2013-06-13 09:51
无关的太多了,你这样问:
fstream iofile("staff.dat",ios::in|ios::out|ios::binary);
if(!iofile)
{
   cerr<<"open staff.dat error!"<<endl;
}
为什么运行时老是出现 open staff.dat error!?

更简洁的,还可以这样问:
fstream iofile("staff.dat",ios::in|ios::out|ios::binary);
为什么运行时打开文件失败?
#3
wuchunbing2013-06-13 20:19
我想问下 你这个是C++程序吗?
#4
wuchunbing2013-06-13 20:31
我运行了下你的程序,基本问题没有的 当然你要用exit函数 最好包含stdlib.h头文件.很明显这个程序不是你自己写的 ,因为这个程序中要求的staff.dat文件根本不存在,程序也没有表明不存在既创建。你先在你程序的当前目录下创建一个staff.dat文件 然后在运行。就OK了
#5
TonyDeng2013-06-13 20:37
以下是引用wuchunbing在2013-6-13 20:19:52的发言:

我想问下 你这个是C++程序吗?

用了C++语法和一些函数、库,就算是C++程序,很多人都这样认为的。
1