请教:数据文件的输入与输出?

lixuekun 2001-06-10 10:48:00

sprintf(oneline,"%10s %5d %5.2f %5.2f %5.2f %5.2f\n","line",1,p1x,[ p1y,p2x,p2y);
file.WriteString(oneline);
将数据写入文件

file.ReadString(oneline,200);
sscanf(oneline,"%s,%d,%f,%f,%f,%f",elementname,&elementindex,&p1x,&p1y,&p2x,&p2y);
读出数据,却只有elementname获得正确值,其他都不对。

请各位指点!谢谢
...全文
590 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixuekun 2001-06-24
  • 打赏
  • 举报
回复
lixuekun 2001-06-16
  • 打赏
  • 举报
回复
lixuekun 2001-06-16
  • 打赏
  • 举报
回复
lixuekun 2001-06-16
  • 打赏
  • 举报
回复
lixuekun 2001-06-16
  • 打赏
  • 举报
回复
lixuekun 2001-06-16
  • 打赏
  • 举报
回复
cbc 2001-06-12
  • 打赏
  • 举报
回复
解决了,怎么不给分呀,哈哈
Suprman 2001-06-12
  • 打赏
  • 举报
回复
连半个铜板都没有啊?!
Suprman 2001-06-11
  • 打赏
  • 举报
回复
想个笨法进行调试:
将elementname以及与之对应的部分都去掉,再看剩下的变量
能否得到正确的值!依次类推。
cbc 2001-06-11
  • 打赏
  • 举报
回复
错了,应为
sscanf(oneline,"%s%d%lf%lf%lf%lf",
elementname,&elementindex,&p1x,&p1y,&p2x,&p2y);

你的online中没用","隔开
lixuekun 2001-06-11
  • 打赏
  • 举报
回复
按cbc(逍遥子)和Suprman()的主意试了后,还是不对,其中能正确获得elementname和elementindex的值,其余的四个就根本没有被赋值。还请各位多指点!
lixuekun 2001-06-11
  • 打赏
  • 举报
回复
请各位介绍一些其他有关生成数据文件和从数据文件中提取数据的方法,我也将非常感谢!
Suprman 2001-06-11
  • 打赏
  • 举报
回复
请试一下:(我得到的结果正确)
CStdioFile file;
char oneline[201]="\0";
char elementname[10]="\0";
int elementindex;
float p1x,p1y,p2x,p2y;
p1x=22.3;
p1y=44.4;
p2x=87.1;
p2y=889.7;

file.Open("tryit",CFile::modeWrite);
sprintf(oneline,"%10s %5d %5.2f %5.2f %5.2f %5.2f\n","line",
1,p1x,p1y,p2x,p2y);
file.WriteString(oneline);
file.Close();
file.Open("tryit",CFile::modeRead);
file.ReadString(oneline,200);
sscanf(oneline,"%s\n %d %f %f %f %f",elementname,&elementindex,&p1x,&p1y,&p2x,&p2y);
file.Close();
请注意 "sscanf"中的 "\n"!
lixuekun 2001-06-11
  • 打赏
  • 举报
回复
谢谢各位的帮忙。
写进数据文件的内容是正确的,如下
line 1 238.43 62.50 248.43 70.50
readString(oneline 100)得到的也是对的,
就是在sscanf(....是出错!
Suprman 2001-06-11
  • 打赏
  • 举报
回复
如不想改变double类型,请改变各函数中的对应类型!
Suprman 2001-06-11
  • 打赏
  • 举报
回复
显然您的程序用了强制类型转换(double->float),在写入文件时某些位信息
丢失,重新得到得数据当然不可靠,请将double改为float,试一试!
lixuekun 2001-06-11
  • 打赏
  • 举报
回复
非常感谢Suprman()的帮助!问题解决了!谢谢!
cbc 2001-06-10
  • 打赏
  • 举报
回复
改为:
sscanf(oneline,"%s,%d,%lf,%lf,%lf,%lf",
elementname,&elementindex,&p1x,&p1y,&p2x,&p2y);

double类型的数据输入要用"%lf",而不是"%f"


lixuekun 2001-06-10
  • 打赏
  • 举报
回复
变量定义如下:请指点,谢谢!
char elementname[10];
int elementindex;
double p1x,p1y,p2x,p2y;
Suprman 2001-06-10
  • 打赏
  • 举报
回复
关于类似的这种应用,最好用结构定义(struct)
将不同得数据放到一个结构中,避免不必要的错误!
加载更多回复(7)

16,550

社区成员

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

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

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