【高分】fscanf怎么从文件中读入double类型数据

sin816 2009-04-01 10:22:21
数据文件test.txt中如下数据
3
10.026278 10.461819
.026278 10.461819
10.026278 40.461819
4
-24.718327 10.256420
-9.718327 10.256420
-24.718327 40.256420
-9.718327 40.256420
5
-25.701054 -40.155312
-10.701054 -40.155312
-25.701054 -10.155312
-10.701054 -10.155312
10.639103 -40.642311

void fun()
{
FILE *fp = fopen("test.txt","r");
double x,y;
int num;
//float x,y;
while (!feof(fp))
{
fscanf(fp, "%d\n", &num);
cout<<num<<endl;
for(int i=0; i<num; i++)
{
fscanf(fp, "%f%f", &x, &y);
cout<<x<<", "<<y<<endl;
}
cout<<endl;
}
}

如果采用x、y采用double类型,会输出如下指数形式(不是我想要的,结果也不对)
3
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061

4
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061

5
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061
-9.25596e+061, -9.25596e+061

如果x、y采用float类型 读入的数据精度不够
3
10.0263, 10.4618
0.026278, 10.4618
10.0263, 40.4618

4
-24.7183, 10.2564
-9.71833, 10.2564
-24.7183, 40.2564
-9.71833, 40.2564

5
-25.7011, -40.1553
-10.7011, -40.1553
-25.7011, -10.1553
-10.7011, -10.1553
10.6391, -40.6423

请教大家怎么才能从文件中读入double 类型数据呢,并赋值给 double变量???
...全文
670 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengde007 2009-04-01
  • 打赏
  • 举报
回复
%lf就搞定了呀……
liliangbao 2009-04-01
  • 打赏
  • 举报
回复
fscanf(fp, "%lf%lf", &x, &y);
即可!
hylove9494 2009-04-01
  • 打赏
  • 举报
回复
%lf
goodname 2009-04-01
  • 打赏
  • 举报
回复
fscanf(fp, "%lf%lf", &x, &y);

printf("%.6f,%.6f\n",x,y);
Cpp权哥 2009-04-01
  • 打赏
  • 举报
回复
格式控制符要用%lf才行。
ltc_mouse 2009-04-01
  • 打赏
  • 举报
回复
是不是要用fscanf(fp, "%lf %lf", &x,&y)才能读入double呀?

C++其实可以使用ifstream的~

double x, y;
ifstream ifs("test.txt");
ifs >> num;
ifs >> x >> y;

69,382

社区成员

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

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