关于读取文件中的浮点数的问题

swgfqq 2005-05-15 11:36:54
我在一个消息函数中写了如下代码:

OnFileRead()
{
CFile file("1.txt",CFile::modeRead);
char ch1[8],ch2[8];
file.Read(ch1,8);
file.Seek(8,CFile::current);
file.Read(ch2,8);
double dnum=atof(ch1);
double dnum2=atof(ch2);
}

在1.txt文件中的浮点数:
0.200000 0.300000
0.230000 0.200000
不知道为什么读出来之后,发现dnum2的值变成了0.00000000000了,对此我很是不解,请那位高人指点一下
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
swgfqq 2005-05-17
  • 打赏
  • 举报
回复
不过,不管怎么样,我还是要谢谢大家对我的帮助。
swgfqq 2005-05-17
  • 打赏
  • 举报
回复
上面的那种方法我试过了,可是不行,我后来问了别人,才知道是因为在文本文件中的字符后面的一个符号是换行符,文件指针在文件中读取数据的时候,当读到换行符的时候,文件指针就会自动的再向后移动一个字符的位置,然后再到下一行去读数据。
不过我后来用了这种方法把文件中的数据读出来了
char ch1[8],ch2[8];
double dnum,dnum2;
while(!eof(pfile))
{
fscanf(pfile,"%s %s",ch1,ch2);
dnum=atof(ch1);
dnum2=atof(ch2);
}
lgxysl 2005-05-17
  • 打赏
  • 举报
回复
参考:http://community.csdn.net/Expert/topic/4011/4011919.xml?temp=.5836756
handwolf 2005-05-16
  • 打赏
  • 举报
回复
调试看一下ch2的值,是否不是数值!

建议用 vcmute(横秋) 的方法:

while(fscanf(fp,"%f %f",&dnum1,&dnum2))
{
//...
}
vcmute 2005-05-16
  • 打赏
  • 举报
回复
即使是不解尾,也只会利用前面的有效数字转化为浮点数
主要是看ch2读的对不对,可能中间的是^t而不是8个空格
vcmute 2005-05-16
  • 打赏
  • 举报
回复
try
fscanf(fp,"%f %f",&dnum1,&dnum2);
jerry 2005-05-15
  • 打赏
  • 举报
回复
字符串也不结尾... 很危险的

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧