我需要实现以下逻辑:
如果文件存在就以可读写的方式打开它,否则新建一个。代码如下:
  int today = 0;
  char* pFileName = "reminder.set";
  CFile f;
  CFileException e,e1;
  if ( !f.Open( pFileName, CFile::modeReadWrite, &e ))
  {
    if (f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, &e1 ))
      f.Write( &today, sizeof(int))
    else
      return FALSE;
  }
  else
  {
    f.Read(&lastMark,sizeof(int));
  }
但是当程序运行时,如果找不到reminder.set程序就出错中止,但是reminder.set已经建立。也就是说f.Write( &today, sizeof(int))出错,我想知道为什么,谁能帮帮我吗?

解决方案 »

  1.   

    f.Write( &today, sizeof(int))后面缺少;号,文件没有关闭。
      

  2.   

    我试过了,你的程序没有问题,可能是别的地方有问题,还有就是f.Read(&lastMark,sizeof(int));其中的last 是什么
      

  3.   

    last是一个int型整数
    这部分代码是正常的,因为当以读写方式打开文件失败,不会执行到此行;
    我想也不是分号的问题,我其实是这样写的:
    if (f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, &e1 ))
    {
    f.Write( &today, sizeof(int));

    else
    {
    return FALSE;
    }编译没有警告也没有错误,每次都是执行到f.Write( &today, sizeof(int))的时候出现致命错误,然后就葛屁了!!
    我都快疯了,为什么会有这样的问题,我的操作系统是win2000
      

  4.   

    f.Write( &today, sizeof(int)); 换成其他有没有错?,如果有则f.Open有问题,没有f.Write( &today, sizeof(int));
    的问题
      

  5.   

    virtual void Write( const void* lpBuf, UINT nCount );
    throw( CFileException );会不会是&today的问题,把它该成一个字符数组试试
    如 char szChar[10];
       strcpy(szChar ,"test");
       f.Write(szChar , strlen(szChar));
      

  6.   

    是指针定位的问题吧,在write之前用f.Seek,而且文件打开后要关闭。