CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

帮我看看文件在第二次打开不成功,书上的一个例子

楼主josn_lu()2005-07-27 10:06:02 在 C/C++ / C++ 语言 提问

int   main()  
  {     char   fileName[80];  
        char   buffer[255];  
        cout<<   "Please   re-enter   the   file   name:   ";  
        cin>>   fileName;  
   
        ifstream   fin(fileName);  
        if(fin)  
        {     cout<<   "Current   file   contents:\n";  
              char   ch;  
      while(fin.get(ch))  
        cout<<   ch;  
      cout<<   "\n***End   of   file   contents.***\n";  
        }  
        fin.close();  
   
        cout<<   "\nOpening   "<<   fileName   <<   "   in   append   mode...\n";  
           
        ofstream   fout(fileName,ios::app);  
        if(!fout)  
        {     cout<<   "Unable   to   open   "<<   fileName   <<   "   for   appending.\n";  
              return   1;  
        }  
   
        cout<<   "\nEnter   text   for   the   file:   ";  
        cin.ignore(1,'\n');   //用户输入文件名时留在缓存中的换行符被吃掉  
        cin.getline(buffer,   255);  
        fout   <<   buffer   <<"\n";  
        fout.close();  
   
        fin.open(fileName);    
        if(!fin)   //   此处第二次打开文件返回不成功  
        {     cout   <<   "Unable   to   open   "<<   fileName   <<   "   for   reading.\n";  
              return   1;  
        }  
   
        cout   <<   "\nHere's   the   contents   of   the   file:\n";  
        char   ch;  
        while(fin.get(ch))  
        cout<<ch;  
        cout<<   "\n***End   of   file   contents.***\n";  
        fin.close();  
        return   0;  
  }  
  问题点数:20、回复次数:5Top

1 楼corrupt(喜欢 睡在床板下 的思考)回复于 2005-07-27 10:18:50 得分 10

这个     有类试的帖子  
   
  我上次帮人改时     加了这句:fin.clear();---在fin.clear();之后    
   
  你试试  
  Top

2 楼ericbu(~~~~~~~~~~~~~~~)回复于 2005-07-27 10:27:40 得分 5

我试了试,可以的,但为什么呢?Top

3 楼josn_lu()回复于 2005-07-27 10:32:54 得分 0

我用vcsp6和   vc.Net试了第二次打开不成功返回失败  
  这个例子应该没有什么错误Top

4 楼josn_lu()回复于 2005-07-27 10:41:25 得分 0

参考了2楼的提示,在fin.close()后面添加fin.clear()   第二次打开就成功了  
  不知什么原因....  
  文件操作好象大家都习惯用c格式Top

5 楼WuYL7812(龙哥)回复于 2005-07-27 11:47:51 得分 5

发现一个问题  
  你弄一个小一点的文件,比如只有3个字母,然后调用get的时候计数,看看调用了几次,实际上调用了4次。假如改用for循环for   (i   =   0;   i   <   3;   i++),让其只调用3次get,之后关掉文件  
  下次打开不用调用clear也可以的,就是说你读完文件之后(这里是3个字母)再调用一次get,下次就打不开了。  
  Top

相关问题

  • 怎么打开文本文件?用什么方法?我想看例子~~
  • 打开文件
  • 打开文件
  • 文件打开
  • 文件打开
  • 打开文件
  • 打开文件
  • 打开文件
  • C++大学教程的光盘里面有一些.jar的文件,我想可能是书中例子的源码,可是怎么打开他啊?记事本不行,不是arj文件....
  • 给我一个用二进制方式打开并载入文本文件的例子

关键词

  • fin
  • filename
  • cout
  • char

得分解答快速导航

  • 帖主:josn_lu
  • corrupt
  • ericbu
  • WuYL7812

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo