我想从 C 语言的文件中获取双精度值

I want to fetch double values from a file in C language

我有一个 numbers.txt 文件,其中有一些格式为 number0 :23.95 number1 :90.25 number2 :77.31 number3 :27.84 number4 :90.03 number5 :19.83 的数据,我想要所有浮点数的总和(23.95 + 90.25 + 77.31 + 27.84 + 90.03 在这个case) 在 C 编程语言中。我只是不知道如何获取这些浮点数,如果 numbers.txt 本来是 34.22 44.56 89.44 那么它会很容易,但我不能在这里更改文件格式。任何人都可以帮忙吗? 提供 numbers.txt

的截图
  1. 检查“:”字符行,可能使用 strchr

  2. 如果有冒号,从它后面的一个字符开始解析,可能使用 atof.

您可以使用 fscanf 来完成这项工作:

#include <stdio.h>

int main() {
    FILE *fp = fopen("numbers.txt", "r");
    if (fp == NULL) {
        fprintf(stderr, "Cannot open %s\n", "numbers.txt");
        return 1;
    }
    int count = 0;
    double d, sum = 0.0;
    while ((fscanf(fp, " number%*[0-9] :%lf", &d) == 1) {
        sum += d;
        count++;
    }
    fclose(fp);
    printf("read %d numbers, sum: %g\n", count, sum);
    return 0;
}

以上代码将比 fscanf(fp, "%*s :%lf", &d) 更严格地匹配文件内容:只要文件内容匹配,扫描就会继续迭代:可选的白色 space 后跟字符 number 紧跟一个数字,然后是可选的白色 space、一个冒号、更多可选的白色 space 和一个浮点数。