sscanf分离double数

underuwing 2010-04-16 11:21:53
我用sscanf分离int型数据,是正常的如下所示:
#include <stdio.h>
int main()
{
char buf[]="22,115";
int x;
int y;
sscanf(buf,"%d,%d",&x,&y);
printf("x=%d\n",x);
printf("y=%d\n",y);
return 0;
}

但是分离double型数据时,为什么得到的是错误的数据呢?
如下:
#include <stdio.h>
int main()
{
char buf[]="22.123,115.123";
double x;
double y;
sscanf(buf,"%f,%f",&x,&y);
printf("x=%f\n",x);
printf("y=%f\n",y);
}
...全文
454 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
canshui 2010-04-16
  • 打赏
  • 举报
回复
double和long double型对应的是%lf
float对应的是%f
float 是4字节赋值
double 是8字节赋值
long double是不小于8个字节
cattycat 2010-04-16
  • 打赏
  • 举报
回复
%lf
lovesi3344 2010-04-16
  • 打赏
  • 举报
回复
double对应的是%lf,float对应的才是%f
kingteng 2010-04-16
  • 打赏
  • 举报
回复
2楼正解,double对应的是%lf,float对应的才是%f
waqianlang 2010-04-16
  • 打赏
  • 举报
回复
没用过
EricFight 2010-04-16
  • 打赏
  • 举报
回复

#include <stdio.h>
int main()
{
char buf[]="22.123,115.123";
double x;
double y;
sscanf(buf,"%lf,%lf",&x,&y);
printf("x=%lf\n",x);
printf("y=%lf\n",y);
}
underuwing 2010-04-16
  • 打赏
  • 举报
回复
...
huanmie_09 2010-04-16
  • 打赏
  • 举报
回复
楼主看看scanf格式控制符就知道了.
sscanf(buf,"%f,%f",&x,&y);
-->
sscanf(buf,"%lf,%lf",&x,&y);
wxwlll 2010-04-16
  • 打赏
  • 举报
回复
double对应scanf时用%lf
printf使用%f

70,036

社区成员

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

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