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

请问:请帮忙看看小弟我这个读写文件的C++程序是不是有有关问题

2012-02-19 
请教:请帮忙看看我这个读写文件的C++程序是不是有问题?这是一个我用WindowsSDK编的贪食蛇游戏里保存和载入

请教:请帮忙看看我这个读写文件的C++程序是不是有问题?
这是一个我用Windows   SDK编的贪食蛇游戏里保存和载入游戏的函数,Snake和apple都是全局变量,程序运行时点菜单的保存游戏时调用SaveGame函数,点载入游戏时调用LoadGame函数,devc++4.9.9.2编译通过.


//保存游戏,保存Snake和apple,成功返回true,失败返回false  
bool   SaveGame(void)
{
          ofstream   mysave( "save.snk ");
          int   i;
          if(mysave.fail())
          {
                    return   false;
          }
          //存放蛇的长度
          mysave < <iLength < <endl;  
          //存蛇的结构  
          for(i   =   0;   i <iLength;   i++)
                  mysave < <Snake[i].x < < "   " < <Snake[i].y < <endl;
          if(mysave.bad())//如有致命错误返回false  
          {
                    return   false;
          }
          //存果子的位置  
          mysave < <apple.x < < "   " < <apple.y < <endl;
          if(mysave.bad())//如有致命错误返回false  
          {
                    return   false;
          }
          mysave.close();
          return   true;
}

//载入游戏,成功返回true,错误返回false
bool   LoadGame(void)
{
          ifstream   myload( "save.snk ");
          if(myload.fail())
          {
                    return   false;
          }
          int   len,i;
          myload> > len;   //载入蛇的长度
          if(myload.bad())//如有致命错误返回false  
          {
                    return   false;
          }
          iLength   =   len;  
          for(i   =   0;   i <len;   i++)//载入蛇的结构  
                  myload> > Snake[i].x> > Snake[i].y;
          myload> > apple.x> > apple.y;   //载入果子的位置  
          if(myload.bad())//如有致命错误返回false  
          {
                    return   false;
          }
          myload.close();
          return   true;
}  

但是有个问题,游戏开始后先点保存再点载入什么问题都没有,但是如果点了保存后退出,在启动游戏后直接点载入游戏(这样我下次开机就可以接着上次的玩),就会一长串对话框,内容都一样:

“Microsoft   Visual   C++   Runtime   Library

    Runtime   Error:


   
    Program:   D:\program\code\snake\SNAKE.exe

    This   application   has   requested   the   Runtime   to   terminate   it   in   a   unusual   way.
    Please   contact   the   application 's   support   team   for   more   information.”
换句话说,

                    如果文件不存在,点载入文件会进入我程序中的错误处理,没有什么异常;
                    如果先点保存再点载入,                                                             程序正常;
                    如果点了保存,退出,再启动游戏,点载入文件,                 就出现上面的错误。
这就有点奇怪,我根本就没装VC++,怎么会冒出VC++的错误?请各位帮忙看看程序是不是有什么问题?谢谢!

[解决办法]
跟踪一下,在哪出错了.
[解决办法]
存档后,
对工程进行单步执行看看问题出在哪个语句 ~~

从这个问题现象来看,
好像是对文件操作冲突了?猜测 ~~
[解决办法]
最好跟一下程序,从程序上来看,没什么问题,感觉上像是在程序运行的时候出现了资源冲突。
[解决办法]
myload> > Snake[i].x
你Snake没有预开大小。
前面加Snake.resize(len);

热点排行