首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,谭浩强c++程序设计P452

2013-03-04 
求助,谭浩强c++程序设计P452例13.16在增加#include iostream#include cstring后仍然不对,请指出错误#i

求助,谭浩强c++程序设计P452
例13.16在增加
#include <iostream>
#include <cstring>后仍然不对,请指出错误

#include <fstream>
#include <iostream>
#include <cstring>

using namespace std;
struct student
{int num;
 char name[20];
 float score;
};
int main()
{int i;
 student stud[5]={1001,"Li",85,1002,"Fun",97.5,1004,"Wang",54,
                  1006,"Tan",76.5,1010,"ling",96};
 fstream iofile("stud.txt",ios::in|ios::out|ios::binary);
 if(!iofile)
  {cerr<<"open error!"<<endl;
  abort();
  }
 for(i=0;i<5;i++)
   iofile.write((char *)&stud[i],sizeof(stud[i]));
 student stud1[5];
 for(i=0;i<5;i=i+2)
   {iofile.seekg(i*sizeof(stud[i]),ios::beg);
    iofile.read((char *)&stud1[i/2],sizeof(stud1[i]));
    cout<<stud1[i/2].num<<" "<<stud1[i/2].name<<" "<<stud1[i/2].score<<endl;
   }
 cout<<endl;
 stud[2].num=1012;
 strcpy(stud[2].name,"Wu");
 stud[2].score=60;
 iofile.seekp(2*sizeof(stud[0]),ios::beg);
 iofile.write((char *)&stud[2],sizeof(stud[2]));
 iofile.seekg(0,ios::beg);
 for(i=0;i<5;i++)
   {iofile.read((char *)&stud[i],sizeof(stud[i]));
    cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
   }
 iofile.close();

 return 0;
}



c++ 谭浩强 求助 程序 新手
[解决办法]
添加#include <cstdlib>
[解决办法]

#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>

using namespace std;

struct student
{
       int num;
       char name[20];
       float score;
};

int main()
{
    int i;
    student stud[5]={1001,"Li",85,1002,"Fun",97.5,1004,"Wang",54,
                  1006,"Tan",76.5,1010,"ling",96};
    fstream iofile("stud.txt",ios::in
[解决办法]
ios::out
[解决办法]
ios::binary);
    if(!iofile)
    {
        cerr<<"open error!"<<endl;
        abort();
    }
     for(i=0;i<5;i++)
        iofile.write((char *)&stud[i],sizeof(stud[i]));
     student stud1[5];
     for(i=0;i<5;i=i+2)


     {
         iofile.seekg(i*sizeof(stud[i]),ios::beg);
         iofile.read((char *)&stud1[i/2],sizeof(stud1[i]));
         cout<<stud1[i/2].num<<" "<<stud1[i/2].name<<" "<<stud1[i/2].score<<endl;
     }
     cout<<endl;
     stud[2].num=1012;
     strcpy(stud[2].name,"Wu");
     stud[2].score=60;
     iofile.seekp(2*sizeof(stud[0]),ios::beg);
     iofile.write((char *)&stud[2],sizeof(stud[2]));
     iofile.seekg(0,ios::beg);
     for(i=0;i<5;i++)
     {
         iofile.read((char *)&stud[i],sizeof(stud[i]));
         cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
     }
     iofile.close();
     return 0;
}


[解决办法]
我这也能正常编译通过啊
[解决办法]

#include <fstream>
#include <iostream>
#include <cstring>
#include <cstdlib>
 
using namespace std;
struct student
{int num;
 char name[20];
 float score;
};
int main()
{int i;
 student stud[5]={1001,"Li",85,1002,"Fun",97.5,1004,"Wang",54,
                  1006,"Tan",76.5,1010,"ling",96};
 fstream iofile("stud.txt",ios::in
[解决办法]
ios::out
[解决办法]
ios::binary);
 if(!iofile)
  {cerr<<"open error!"<<endl;
  abort();
  }
 for(i=0;i<5;i++)
   iofile.write((char *)&stud[i],sizeof(stud[i]));
 student stud1[5];
 for(i=0;i<5;i=i+2)
   {iofile.seekg(i*sizeof(stud[i]),ios::beg);
    iofile.read((char *)&stud1[i/2],sizeof(stud1[i]));
    cout<<stud1[i/2].num<<" "<<stud1[i/2].name<<" "<<stud1[i/2].score<<endl;
   }
 cout<<endl;
 stud[2].num=1012;
 strcpy(stud[2].name,"Wu");
 stud[2].score=60;
 iofile.seekp(2*sizeof(stud[0]),ios::beg);
 iofile.write((char *)&stud[2],sizeof(stud[2]));
 iofile.seekg(0,ios::beg);
 for(i=0;i<5;i++)
   {iofile.read((char *)&stud[i],sizeof(stud[i]));
    cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
   }
 iofile.close();
 
 return 0;
}

[解决办法]
引用:
谢谢
添加#include <cstdlib>后可以正常编译,但是输出open error!


怎么回事


fstream iofile("stud.txt",ios::in
[解决办法]
ios::out
[解决办法]
ios::binary);

打开一个名为stud.txt的文件,如果你的当前目录下没有这个文件就会出现open error!

热点排行