我要用CFile类读取二进制文件(Line1.dat),存入Data[MAXNUMBER],二进制文件(Line1.dat)中的数据应该是:
124
123
123
123
123
143
每次读取一个,比如第一个数124.第二次取123,.....
我现在用
dataFile.Open("Line1.dat",CFile::modeRead);
dataFile.Read(&Data[0],sizeof(Data[0])
读不出数据,是不是文件格式不对啊?还是怎么回事?

解决方案 »

  1.   

    ataFile.Open("Line1.dat",CFile::modeRead | CFile::typeBinary );
      

  2.   

    Data[MAXNUMBER]是什么类型的?文件中的数据几位一组?大小需要一致。
      

  3.   

    data[MAXNUMBER]是float型的,那我文件中的数据该怎么排列啊?我要取的数据就是一个一个取,124算一个.
      

  4.   

    Line1.dat
    里面的格式就是
    124
    123
    123
    123
    123
    143
      

  5.   

    直接使用API:
       BOOL Open(LPCTSTR pstrFileName, 
                 DWORD dwAccess = GENERIC_READ, 
                 DWORD dwShareMode = FILE_SHARE_READ, 
                 DWORD dwFlags = OPEN_EXISTING,
                 DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL)
       {
          _ASSERTE(!::IsBadStringPtr(pstrFileName,-1));
          Close();
          // Attempt file creation
          HANDLE hFile = ::CreateFile(pstrFileName, 
             dwAccess, 
             dwShareMode, 
             NULL,
             dwFlags, 
             dwAttributes, 
             NULL);
          if( hFile == INVALID_HANDLE_VALUE ) return FALSE;
          m_hFile = hFile;
          return TRUE;
       }
    这是打开文件
    以下是读文件:
       BOOL Read(LPVOID lpBuf, DWORD nCount)
       {
          _ASSERTE(m_hFile!=INVALID_HANDLE_VALUE);
          _ASSERTE(lpBuf!=NULL);
          _ASSERTE(!::IsBadWritePtr(lpBuf, nCount));
          if( nCount==0 ) return TRUE;   // avoid Win32 "null-read"
          DWORD dwRead;
          if( !::ReadFile(m_hFile, lpBuf, nCount, &dwRead, NULL) ) return FALSE;
          return TRUE;
       }
    然后在关闭:
       void Close()
       {
          if( m_hFile == INVALID_HANDLE_VALUE ) return;
          ::CloseHandle(m_hFile);
          m_hFile = INVALID_HANDLE_VALUE;
       }
      

  6.   

    可以用
    CStdioFile.ReadString()
      

  7.   

    好象还是不行,我一本书上写的是用CFile,它是可以执行的
      

  8.   


    CStdioFile file;
    CString buff ;
    int i = 0 ;
    if(file.Open("Line1.dat",CFile::modeRead))
    {
      while(file.ReadString(buff))
      {
     Data[i] = atoi(buff) ;
                     i++ ;
      } }
    else
    {
      MessageBox("打开文件错误") ;
    }}
      

  9.   

    我读出来的数能是float型的么?
      

  10.   

    我希望读出的是float数,存入Data[],能行吗?
      

  11.   

    没看明白,二进制文件怎么能在记事本中显示出来~~~
    读二进制文件应该用unsigned char类型啊
    unsigned char *sData=new unsigned char [REQUIRELENGTH];读数据的时候
    nLength=sizeof(unsigned char)*REQUIRELENGTH;
    fp.Read(sData,nLength);