疯了,昨晚搞了好久,愣是报错,无奈向诸网友求救想打开一个.txt文档,一行两个数据的,想将数据放入数组,但feof这一行报错
void CMFCDlg::OnBnClickedOk()
{  
FILE *fp;   double x[1000] ;int i=0;
CString m_strFilePathName;
CFileDialog dlg(TRUE,_T("txt"),_T("*.txt"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("txt文件(*.txt)|*.txt|所有文件(*.*)|*.*|"));
if (dlg.DoModal())

CString m_strFilePathName=dlg.GetFileName();
}
fp=fopen("m_strFilePathName","r");   
while(!feof(fp))
{ fscanf(fp, "%f", &x[i]);i++;』  fclose(fp);free(fp); }

解决方案 »

  1.   

    小弟VC++刚入门,对还是蛮依赖c++的,搞不清楚这个feof现在很别扭
      

  2.   

    fp=fopen(m_strFilePathName,"r");   
    if (fp)
    {
    while(!feof(fp))
    { fscanf(fp, "%f", &x[i]);i++;』  fclose(fp);}}
      

  3.   

    FILE *fp;   double x[1000] ;int i=0;
    CString m_strFilePathName;
    CFileDialog dlg(TRUE,_T("txt"),_T("*.txt"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("txt文件(*.txt)|*.txt|所有文件(*.*)|*.*|"));
    CString m_strFilePathName
    if (dlg.DoModal()==IDOK)
    {
    m_strFilePathName=dlg.GetPathName();
    }
    fp=fopen(m_strFilePathName,"r");   
    if (fp)
    {
    while(!feof(fp))

    fscanf(fp, "%f", &x[i]);i++;
      fclose(fp);
    }
    }
      

  4.   

    上面少打了个;号。
    FILE *fp;   double x[1000] ;int i=0;
    CString m_strFilePathName;
    CFileDialog dlg(TRUE,_T("txt"),_T("*.txt"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("txt文件(*.txt)|*.txt|所有文件(*.*)|*.*|"));
    CString m_strFilePathName;
    if (dlg.DoModal()==IDOK)
    {
    m_strFilePathName=dlg.GetPathName();
    }
    fp=fopen(m_strFilePathName,"r");   
    if (fp)
    {
    while(!feof(fp))

    fscanf(fp, "%f", &x[i]);i++;
      fclose(fp);
    }
    }
      

  5.   

    to wangk(倒之) :
    void CMFCDlg::OnPaint() 
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    }//当用户拖动最小化窗口时系统调用此函数取得光标显示。
    HCURSOR CMFCDlg::OnQueryDragIcon()
    {
    return static_cast<HCURSOR>(m_hIcon);
    }void CMFCDlg::OnBnClickedOk()
    {  
    FILE *fp;   double x[2000] ;int i=0;
    CString m_strFilePathName;
    CFileDialog dlg(TRUE,_T("txt"),_T("*.txt"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("txt文件(*.txt)|*.txt|所有文件(*.*)|*.*|"));
    if (dlg.DoModal())

    CString m_strFilePathName=dlg.GetFileName();
    }
    fp=fopen("m_strFilePathName","r");if(!fp)
     MessageBox("打开文件失败!","Error",MB_OK);
    else
    {
    while(!feof(fp))
    { fscanf(fp, "%f", &x[i]);i++;};
    fclose(fp);}
    }
    结果打不开文件
      

  6.   

    fp=fopen("m_strFilePathName","r");
    ------------------------------------
    我都写了一遍了..............再重复一遍fp=fopen(m_strFilePathName,"r");
      

  7.   

    改成fp=fopen(m_strFilePathName,"r");
    报错*file!=_T('\0')
      

  8.   

    void CMFCDlg::OnBnClickedOk()
    {  
    FILE *fp;   double x[2000] ;int i=0;
    CString m_strFilePathName;
    CFileDialog dlg(TRUE,_T("txt"),_T("*.txt"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("txt文件(*.txt)|*.txt|所有文件(*.*)|*.*|"));
    if (dlg.DoModal())

    CString m_strFilePathName=dlg.GetFileName();//改为GetPathName()也不行
    }
    fp=fopen(m_strFilePathName,"r");
    if(fp)
     {
    while(!feof(fp))
    { fscanf(fp, "%f", &x[i]);i++;};
    fclose(fp);};
    }
      

  9.   

    晕,看清楚了:
    CString m_strFilePathName;//放在外面!
    if (dlg.DoModal()==IDOK)
    {
    m_strFilePathName=dlg.GetPathName();//取全路径!
    }
      

  10.   

    fopen不是要用文件名吗,定义改了后fp得不到值
    void CMFCDlg::OnBnClickedOk()
    {  
    FILE *fp;   double x[2000] ;int i=0;
    CString m_strFilePathName;
    CFileDialog dlg(TRUE,_T("txt"),_T("*.txt"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("txt文件(*.txt)|*.txt|所有文件(*.*)|*.*|"));
    if (dlg.DoModal())

     m_strFilePathName=dlg.GetFileName();}
    fp=fopen(m_strFilePathName,"r");
    if(fp)                            //断点调试后发现fp报错误指针
     {
    while(!feof(fp))
    { fscanf(fp, "%f", &x[i]);i++;};
    fclose(fp);};
    }
      

  11.   

    fp=fopen(m_strFilePathName,"r");
    那是不是参数m_strFilePathName类型的问题?
      

  12.   

    那你直接用CFileDialog里面的成员函数来读文件,没有必要在用fopen来读取~~
      

  13.   

    wangk(倒之) ( ) 信誉:102    Blog  2006-8-29 20:19:18  得分: 0  
     
     
       
    晕,看清楚了:
    CString m_strFilePathName;//放在外面!
    if (dlg.DoModal()==IDOK)
    {
    m_strFilePathName=dlg.GetPathName();//取全路径!
    }
     
    汗死~ 楼主眼神实在是#$@#
    m_strFilePathName=dlg.GetFileName();//这里要改成取全路径的GetPathName
      

  14.   

    两地方都改了也不行啊
    fopen里面不是要放文件名吗
      

  15.   

    你在fopen前用MessageBox弹出m_strFilePathName看看路径是否正确。