有关文件读取的问题!

pqxx 2002-03-28 09:46:31
我用从一个文本文件中读取数据,文件中的数据格式如下:
如果是正小数则一共八个字符,如果是负小数加上符号位一共九个字符
数据之间无空格回车之类的分隔符,文件也没有头结构,所以我每次
先读出头一个字符,存到m_code中,并判断是不是等于“-”如果是的话就再读出八个字符
如果不是就再读出七个字符,并存到m_read中,最后将m_code和m_read相加
(m_codem_read是CString型),就得出结果,想着没什么问题,可结果一直不对,不知错在那里
代码如下:
char code[1]//读取符号
char temp8[8];//如果是负小数再读取八个字符
char temp7[7];//如果是正小数再读取七个字符
char temp9[9]; //
CString m_read,m_code;
/////////////////////把中间过程的运算结果从文本文件中读出
CFile datfile("dat.txt",CFile::modeRead
| CFile::shareDenyWrite);
for(int j=0;j<J;j++)
{
datfile.Read(code,1);
m_code=code;
if(m_code==“-”)
{
dat.Read(temp8,8);
m_code=code;
m_read=temp8;
m_read=code+m_read;
}
else
{
dat.Read(temp7,7);
m_code=code;
m_read=temp7;
m_read=m_code+m_read;
}
strcpy(temp9,m_read.GetBuffer(m_read.GetLength()));
//按CString中的字节长度读取到temp9
dat[j]=atof(temp9);//double 型
}
datfile.Close();
...全文
57 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
win_book 2002-03-29
  • 打赏
  • 举报
回复
jyu1221(天同) 正确
jianfeizhao 2002-03-29
  • 打赏
  • 举报
回复
如果读取的是一个正数,则只有8位,temp9[9]的最后一个字节是一个随机数,所以读出的数据是错误的。
应该在每一个for()的开始将temp7[7],temp8[8],temp9[9]赋值成0
Kevin_C_K 2002-03-29
  • 打赏
  • 举报
回复
关注一下
folbaby1230 2002-03-29
  • 打赏
  • 举报
回复
用=='-'判断,
而不用=="-";
字符长度加一.
pqxx 2002-03-28
  • 打赏
  • 举报
回复
文件中的数据为-0.0572650.9307951.8033851.5758991等等
想象中code应该读取一个字符,在调试窗口中code也是{45‘-’,传到
m_code中也是{45‘-’,但是一判断if(m_code==“-”)总是false
总是跳到else块儿
在m_read=m_code+m_read;用鼠标停留得到其值为“-烫烫烫烫烫.5726
烫烫烫烫烫
用strcpy得到的temp9也是“-烫烫烫烫烫.5726烫烫烫烫烫
再用dat[j]=atof(temp9);转换为double 型dat[j]就为0.00000了


jyu1221 2002-03-28
  • 打赏
  • 举报
回复
定义可能有问题,应该改为:
char code[1+1]//读取符号
char temp8[8 +1];//如果是负小数再读取八个字符
char temp7[7+1];//如果是正小数再读取七个字符
char temp9[9+1]; //
hyc1980 2002-03-28
  • 打赏
  • 举报
回复
你可以直接取出来判断第一位是否为"-",这样操做不是简单一点吗?再用转换函数把字符串转换
ydogg 2002-03-28
  • 打赏
  • 举报
回复
datflie == dat ??
ydogg 2002-03-28
  • 打赏
  • 举报
回复
这样读取有一个风险,最好打开文件后就 SeekToBegin(),否则如果初始文件指针有问题的话,可能的不到正确结果。


请详细说明结果和想象中有何不同。

double
atod

16,551

社区成员

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

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

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