c - 从文件中读取 %le

标签 c file types scanf

我正在尝试使用 fscanf 从输入文件中读取 3 个 double 值,但在尝试这样做时遇到了段错误。我的代码如下:

    FILE * infile = fopen(argv[1], "r");
    double r_d, r, c;
    fscanf(infile, "%le %le %le", r_d, r, c);
    fclose(infile);

输入文件如下所示:

1.000000e+00 1.000000e+00 1.000000e+00

知道我哪里出错了吗?我确定数据类型应该被读取为 %le。

最佳答案

scanf 函数需要一个指针 指向您想要用值填充的对象,因此:

fscanf(infile, "%le %le %le", &r_d, &r, &c);
//                            ^     ^   ^

会是一个更好的开始。如果没有寻址运算符,它很可能会使用变量的当前值(如果它们看起来是静态存储持续时间,那么它们将是任意的)作为将值写入的指针。这不太可能有好结果:-)

我想一个像样的编译器至少应该警告你参数的类型不符合预期。如果是这样,您应该养成不忽略此类警告的习惯。

关于c - 从文件中读取 %le,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965046/

相关文章:

delphi - LongInt 与 Integer、LongWord 与 Cardinal 的区别

C 标准 - 函数定义是函数原型(prototype)吗?

c - 在外部函数中分配一个字符串数组

php - 在 PHP 中合并文件和发布数据

c++ - 使用 C++ 将某些行读入二维数组

data-structures - 数据库支持应用程序的 Haskell 数据结构

c - fgets() 保存跳行字符,而不是跳过输入

c - 如何创建一个名称取自 PostgreSQL 中的字符串的表?

c++ - 检查目录树中的任何文件是否已更改的最快方法是什么?

python - 对 http-post 参数进行类型检查 Python;使用类型作为字典中的值