vc++ 2009 fscanf 读文件数据错误

JoySH 2010-08-16 10:37:48
文件中有存储数据:

0x0040, 0x0040,
0x0040, 0x0040,
0x0040, 0x0040,
0x0040, 0x0040,
0x0040, 0x0040,
重复......

用以下格式读取;
fscanf(fp,"%c%c%x%c%c%c%c%x%c%c",&tmp1,&tmp2,&tmp3,&tmp4,&tmp5,&tmp6,&tmp7,&tmp8,&tmp9,&tmp10);


我预计结果:
tmp1 = 0
tmp2 = x
tmp3 = 0040
tmp4 = ,
tmp5 = space
tmp6 = 0
tmp7 = x
tmp8 = 0040
tmp9 = ,
tmp10 = 回车

但是实际的结果完全不正确
tmp1 = 0
tmp2 = 204
tmp3 = x
tmp4 = 204
tmp5 = 0040
tmp6 = ,
tmp7 = 204
tmp8 = space
tmp9 = 204
tmp10 = 0

无故多出了好几个204,真是奇怪啊!


文件用16进制看过:
0x0040
==>
30 78 30 30 34 30 ...
似乎也是正确的.

请高手指点一下,谢谢!


...全文
109 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanjieshuijing 2010-08-17
  • 打赏
  • 举报
回复
可能转换的时候要损失精度吧
JoySH 2010-08-17
  • 打赏
  • 举报
回复
3楼正解,谢谢各位捧场^_^
赵4老师 2010-08-17
  • 打赏
  • 举报
回复
::全局对象
(条件)?(条件为真时执行):(条件为假时执行);
bobo364 2010-08-17
  • 打赏
  • 举报
回复
请问楼上:是什么运算符,最近一直有人用,可我不明白这是啥东西?
blackboycpp 2010-08-17
  • 打赏
  • 举报
回复
同问[Quote=引用 7 楼 coolsky600 的回复:]

vc有2009么 貌似这几年只有2008 和2010
[/Quote]
qazwhl845174869 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 brookmill 的回复:]
试试这个?
int a1, a2;
fscanf(fp, "0x%x, 0x%x,", &a1, &a2);
[/Quote]
正解!
吴明治 2010-08-17
  • 打赏
  • 举报
回复
vc有2009么 貌似这几年只有2008 和2010
cattycat 2010-08-16
  • 打赏
  • 举报
回复
试过了,3楼的没问题。
JoySH 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 brookmill 的回复:]
试试这个?
int a1, a2;
fscanf(fp, "0x%x, 0x%x,", &a1, &a2);
[/Quote]

现在没环境,明天试完回来结帖^_^
brookmill 2010-08-16
  • 打赏
  • 举报
回复
试试这个?
int a1, a2;
fscanf(fp, "0x%x, 0x%x,", &a1, &a2);
JoySH 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 brookmill 的回复:]
楼主的那些tmp,都是什么类型的变量?
[/Quote]

对应%c的都是char类型,对应%x的是int类型;
不贵vc++中的char类型是16bit的吧?
brookmill 2010-08-16
  • 打赏
  • 举报
回复
204就是0xcc,也就是著名的“烫烫烫烫烫”
vc里面未初始化的栈内存,他的值都是这个。
楼主的那些tmp,都是什么类型的变量?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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