我想从 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
的截图
检查“:”字符行,可能使用 strchr
。
如果有冒号,从它后面的一个字符开始解析,可能使用 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 和一个浮点数。
我有一个 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
检查“:”字符行,可能使用
strchr
。如果有冒号,从它后面的一个字符开始解析,可能使用
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 和一个浮点数。