这是我的代码
CCHAR  sRead[8];     
CFile   mFile(L"HotKey.txt",CFile::modeRead);     
if(mFile.GetLength()<8)
return TRUE;
for (int i = 0;i < 9;i++)
{
mFile.Read(sRead,8);
CRunData::HotKeyPage1[i]=sRead;
}
mFile.Read(sRead,8);

mFile.Close();
其中CRunData::HotKeyPage1[i]为CString类型下面是我的文件内容:
SSR             HDG     SPD     LEFT    RIGHT   APCH    TWR     TOFF    

解决方案 »

  1.   

    CStdioFile StdioFile;
    CString strText;
    if( StdioFile.Open("HotKey.txt", CFile::modeRead) == TRUE )
    {
    StdioFile.SeekToBegin();
    while ( StdioFile.ReadString(strText) == TRUE )
    {
    }
    StdioFile.Close();
    }
      

  2.   

    先看一下16进制的值对不对吧
    另外注意一下是否unicode的问题
      

  3.   

    回2楼:
    用StdioFile的话,我该怎么样把文件中的值赋给HotKeyPage1[i]呢?
      

  4.   

    我怎么看你每次读的内容都一样,如果是读取数行就用楼上的方法,
    如果整个内容都在一行的话,用Seek进行确定内容。
      

  5.   

    我每次读到都是8的长度,内容怎么会一样呢?
    用SEEK能给个例子吗?
    谢谢!
      

  6.   


     是不是要把这个数组定义9个CCHAR  sRead[9];
    sRead[8] = '\0';或者每次循环加个 memset(sRead,0,9);
    要不CString后面就会是乱码了吧
      

  7.   

    CCHAR  sRead[8];  
    要定义成CCHAR  sRead[9];      
      

  8.   

    不需要后移
    CStdioFile Read的时候,自己会向后移动读指针,不需要Seek
      

  9.   

    你可以一下子全部读出来,然后用CString的Splite来进行切分嘛
      

  10.   

    这样好像就行
    CCHAR  sRead[9];
    CFile  mFile(L"HotKey.txt",CFile::modeRead);
    if(mFile.GetLength() <8)
    return TRUE;
    for (int i = 0;i  < 9;i++)
    {
    memset(sRead,0,9);
    mFile.Read(sRead,8);
    CRunData::HotKeyPage1[i]=sRead;
    }
    memset(sRead,0,9);
    mFile.Read(sRead,8);mFile.Close(); 
      

  11.   

    CStdioFile StdioFile; 
    CString strText; 
    if( StdioFile.Open("HotKey.txt", CFile::modeRead) == TRUE ) 

    StdioFile.SeekToBegin(); 
    for(int i=0; StdioFile.ReadString(strText) == TRUE && i<9; i++ ) 

        CRunData::HotKeyPage1[i]=sRead; 

    StdioFile.Close(); 
    }