大神们,帮帮忙,用下面这段代码浏览并打开图片中的txt文件后,怎样存入一个n行,8列的数组,麻烦大神们帮忙加一段代码进去,感激不尽。
CString filename;                             // 打开的文件名字符串
    CFile file;                                         // 文件对象
    DWORD len;                                    // 用于保存文件长度
    CFileDialog dlg(TRUE,_T(""),_T("*.*"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("*.*|*.*|"));    DWORD g2Local_1 = dlg.DoModal ();    if(IDOK== g2Local_1){
  
        filename.Format ("%s",dlg.GetPathName());
}
    else if( IDCANCEL == g2Local_1){
      return ;
}
  
  // 读取数据
   file.Open(filename,CFile::modeReadWrite);
   len = file.GetLength();
   char *pReadData = new char[len];                           // 分配内存
   file.Read(pReadData,len);                                       //  这里保存的读取文件的数据
   file.Close();

解决方案 »

  1.   

    1、每一行按格式化读比较好,如fscanf;
    2、定义一个结构体,为每一行的列数;
    3、定义结构体的动态数组,存数据。
      

  2.   

    仅供参考://NAME: essaie bla bla
    //DIMENSION: 8
    //DATA
    //1  14  15
    //2  11  10
    //3  6   4
    //4  7   13
    //5  9   21
    //6  19  3
    //7  1   5
    //8  8   8
    //EOF
    //
    // 文本文件中可能还含有其他内容,但是需要用到的内容即以上//比如data.txt:
    //NAME: essaie bla bla
    //其它内容
    //DIMENSION: 8
    //其它内容
    //DATA
    //其它内容
    //1  14  15
    //其它内容
    //2  11  10
    //其它内容
    //3  6   4
    //其它内容
    //4  7   13
    //其它内容
    //5  9   21
    //其它内容
    //6  19  3
    //其它内容
    //7  1   5
    //其它内容
    //8  8   8
    //其它内容
    //EOF// 目标是要获取NAME后字串,DIMENSION后数值,以及DATA以下的数值
    // 其中NAME就是随便个字句,DIMENSION是城市数量,DATA以下是城市编号,X坐标,Y坐标
    // 所有的这些将赋值给一个事先定义好的结构
    #include <stdio.h>
    #include <string.h>
    #define MAXCPL   80   //每行最大字符数
    #define MAXCITY  100  //每组数据中DATA最多项数,DIMENSION的最大值
    #define MAXNAMEL 32   //NAME最大长度
    struct S {
        char NAME[MAXNAMEL+1];
        int  DIMENSION;
        struct D {
            int NO;
            int X;
            int Y;
        } DATA[MAXCITY];
    } s;
    FILE *f;
    int st,n,i;
    char ln[MAXCPL];
    int main() {
        f=fopen("data.txt","r");
        if (NULL==f) {
            printf("Can not open file data.txt!\n");
            return 1;
        }
        st=0;
        n=0;
        while (1) {
            if (NULL==fgets(ln,MAXCPL,f)) break;
            if (st==0) {
                if (1==sscanf(ln,"NAME: %31[^\n]",s.NAME)) st=1;
            } else if (st==1) {
                if (1==sscanf(ln,"DIMENSION: %d",&s.DIMENSION)) st=2;
            } else if (st==2) {
                if (0==strcmp(ln,"DATA\n")) st=3;
            } else if (st==3) {
                if (3==sscanf(ln,"%d%d%d",&s.DATA[n].NO,&s.DATA[n].X,&s.DATA[n].Y)) {
                    n++;
                    if (n>=MAXCITY || n>=s.DIMENSION) break;
                }
            }
        }
        fclose(f);
        printf("s.NAME=[%s]\n",s.NAME);
        printf("s.DIMENSION=%d\n",s.DIMENSION);
        for (i=0;i<n;i++) {
            printf("s.DATA[%d].NO,X,Y=%d,%d,%d\n",i,s.DATA[i].NO,s.DATA[i].X,s.DATA[i].Y);
        }
        return 0;
    }
    //s.NAME=[essaie bla bla]
    //s.DIMENSION=8
    //s.DATA[0].NO,X,Y=1,14,15
    //s.DATA[1].NO,X,Y=2,11,10
    //s.DATA[2].NO,X,Y=3,6,4
    //s.DATA[3].NO,X,Y=4,7,13
    //s.DATA[4].NO,X,Y=5,9,21
    //s.DATA[5].NO,X,Y=6,19,3
    //s.DATA[6].NO,X,Y=7,1,5
    //s.DATA[7].NO,X,Y=8,8,8
      

  3.   

    data.TXT读取
    CString szLine;
    int index = 0;
    float fval1,……fval7=0.0;
    file.ReadString(szLine);
    sscanf((LPCTSTR)szLine, _T("%d %f  %f  %f  %f %f %f  %f" ),
    &Indxe,&fVal1, &fVal2,&fVal3, &fVal4,&fVal5, &fVal6,&fVal7, );
    Data.txt保存
    sprintf((LPCTSTR)szLine, "%-20d%-13f %-6f %-19f %-16f %-8f %-6f %-10f",   //- 后面数字用来对齐 根据自己需要修改
    Indxe,fVal1, fVal2,fVal3, fVal4,fVal5, fVal6,fVal7, );
    file.wrtie(szLine);
    手动编写 只提供思路