文件已打开,读数据程序如下
void CReadTXTfileView::LoadData()
{
char str[255];
FILE *fp;
fp=fopen(m_filename,"r"); fgets(str,254,fp);
fscanf(fp,"%d\n",&Num);

fscanf(fp,"%s\n",m_Data.m_Name); fgets(str,254,fp); fscanf(fp,"%f\n",&m_Data.m_a0);
CString string;
string.Format("%f",m_Data.m_a0);
AfxMessageBox(string);

相应的文本文件如下
数目
2
长度1
半长轴/m
80000000000.01234535656前几行都能正确读出,最后这个m_Data.m_a0无法正确显示,m_Data是一个数据类,在其中声明了m_a0为双精度。
  我发现在读取时如果取%lf情况会稍微好一点儿,但是数据再取长就无法正确显示了。
这是什么原因?
有何解决办法?

解决方案 »

  1.   

    既然是Txt文件,数据又是分行读取的,建议使用CStdioFile,然后用ReadString读单行数据。另外,我有个疑问:fscanf(fp,"%d\n",&Num);读出的数据是Num为2吗?我没试过,学习!
      

  2.   

    用这个读数据
    CStdioFile::ReadString()
      

  3.   

    还是用fscanf()函数保险;
    我在试cfile 类,只能读字符串,没法直接读数字.
      

  4.   

    用CStdioFile::ReadString()得到的是字符串吧?
    我现在要读进来的是可用于计算的数据呀?
    用流还没有学。感觉不如fscanf直观,好像很麻烦啊?
    对了,各位大侠还没有解释为什么会出现上述问题呢?
      

  5.   

    可以用CString类的成员函数和atof、atoi等来把字符串转换为double、int型