现有一文件,内容大概如下:
点号     X(单位mm)     Y(单位mm)    Z(单位mm)
1        10.1           11.1         12.1
2        20.2           22.2         45.2
3       123.5           15.5         412.4
.
.
.
100     54.5            5.5           5.7现在想把第一列数据放在Number[100],第二列X[100],第三列Y[100],第四列Z[100],
这个怎么实现啊 ?读取时空格和回车问题怎么解决?

解决方案 »

  1.   

    fopen打开文件
    fgetw获取一行数据
    然后sscanf等来分割空格等
      

  2.   

    CString filePathName; CFileDialog dlg(TRUE,"*.txt",NULL,OFN_ALLOWMULTISELECT, NULL, NULL);    if(dlg.DoModal()==IDOK)
    {
    filePathName=dlg.GetPathName();
    }
    CFile file;    file.Open(filePathName,CFile::modeRead); int i;
    for(i=0;i<1000;i++)
    {
    file.Read(&Number1[i],sizeof(int));
    file.Read(&x1[i],sizeof(double));
    file.Read(&y1[i],sizeof(double));

        }
    file.Close();
    读取时总把空格给弄进去,换行也是问题
      

  3.   

    好像可以使用excel搞定。
      

  4.   

    fopen打开文件getline读入一行strtok可以按空格分解数据
      

  5.   


    #define MAX_COUNT 100
    try
    {
    CStdioFile file;
    file.Open(_T("F:\\11.txt"), CFile::modeRead);
    CString strText(_T(""));
    int Number[MAX_COUNT] = {0};
    float X[MAX_COUNT] = {0.0f};
    float Y[MAX_COUNT] = {0.0f};
    float Z[MAX_COUNT] = {0.0f};
    int iVal = 0;
    float fVal1 = 0.0f;
    float fVal2 = 0.0f;
    float fVal3 = 0.0f;
    int nLineCount = 0;
    while(file.ReadString(strText))
    {
    if(!strText.IsEmpty())
    {
    strText.Trim(_T(" "));
    _stscanf(strText, _T("%d %f %f %f"), &iVal, &fVal1, &fVal2, &fVal3);
    Number[nLineCount] = iVal;
    X[nLineCount] = fVal1;
    Y[nLineCount] = fVal2;
    Z[nLineCount] = fVal3;
    nLineCount++;
    if(nLineCount >= MAX_COUNT)
    {
    break;
    }
    }
    }
    }
    catch (CFileException* e)
    {
    e->ReportError();
    e->Delete();
    }
      

  6.   

    可以用CStdioFile.ReadString一行一行读,
    然后用strtok分离各个数据,转化成double存入数组即可。
      

  7.   

    //如果肯定4个量,中间一个空格:
    do
    {
    } while (fscanf(f_handle,"%d %f %f %f", line, x_value,y_value,z_value)==4);
    //对3 123.5 15.5 412.4
    line=3;x_value=123.5;y_value15.5;z_value=412.4。
      

  8.   

    也可以这样,1、以 "r" 模式打开文件,先全部载入内存;2、通过 \n 区分行,3、每读取一行,使用 sscanf(s, "%d %f %f %f", &n, &f1, &f2, &f3); 读取数据;
      

  9.   

    你文件对吗?你Debug下调试一下
      

  10.   


    文件没问题,debug也没有错误,只是我把Number[0]输出到另外一个文件时 结果是乱码,我快烦死了我是菜鸟    。