【问题标题】:Bugs in fscanf/scanf implemintation: incorrect realization of getting double values?fscanf/scanf 实现中的错误:获取双值的错误实现?
【发布时间】:2025-12-06 13:40:01
【问题描述】:

我正在尝试使用 fscanf 函数从文件中获取双精度值。 我正在运行以下代码: 这是我的代码的摘录:

double some_double;
fscanf(file_name,"%lf", &some_double);

例如。文件内容为“10.5”

在调试模式下,我看到读取值 == 10.0000

这是什么:fscanf 函数的错误实现,还是我的错误? 如果是第二个变体 - 请建议如何修复它? 拜托了

编辑

#define nameOfFile "infoOnObjects.txt"
#define stop _asm nop
FILE* file = fopen(nameOfFile, "r");
if (file == NULL)
    throw "error";
double num;
int n = fscanf(file,"%lf", &num);

【问题讨论】:

  • %some_double 甚至可以编译吗?
  • 大概实际代码有&some_double ?
  • 是的,抱歉,当我写帖子时,我输入了错误的字符,代码中出现“&”
  • 请给我们一个例子file_name你从哪里得到的。
  • 我猜file_name 实际上不是包含文件名的字符串,而是fopen 返回的FILE 指针?

标签: c++ iostream scanf


【解决方案1】:

检查十进制除数的语言环境符号是否是点“.”,而不是逗号“,”。此问题在某些平台上有效(例如 Ubuntu gcc;而在 Windows mingw 上则无关紧要)。

【讨论】:

  • 是的!!!!有用!!!尤里,非常感谢你!!!你节省了我很多时间! SPASIBO!!!
最近更新 更多