请编写函数,从一个文件中读取实数求和,并将结果写入另一个文件。 函数原型 void BatchAdd(FILE *in, FILE *out); 说明:参数 in 和 out 为指示两个文件的指针。函数从 in 所指文件中的读出数据,将结果写入 out 所指的文件中。 要求:in 所指文件中有很多行,每行包含两个实数,以空格间隔。函数求出这两个实数的和,写入 out 文件中,每行一个结果。 要求:输出结果保留 2 位小数。 裁判程序 #include <stdio.h> #include <stdlib.h> void BatchAdd(FILE *in, FILE *out); int main() { FILE *in, *out; in = fopen("Addition.txt", "r"); out = fopen("Sum.txt", "w"); if (in && out) { BatchAdd(in, out); } else { puts("文件无法打开!"); } if (in) { fclose(in); } if (out) { fclose(out); puts("文件保存成功!"); } return 0; } /* 你提交的代码将被嵌在这里 */ 在程序所在文件夹中创建文本文件“Addition.txt”,复制下面的内容: Addition.txt 25.9 8.7 120.9 87.518 12.8 65.2 输入样例 (无) 输出样例 文件保存成功! 程序运行结束后,打开“Sum.txt”文件,查看文件内容。 34.60 208.42 78.00 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB C (gcc)
时间: 2024-01-17 18:05:43 浏览: 57
下面是一个可以实现题目要求的函数 BatchAdd:
```c
void BatchAdd(FILE *in, FILE *out) {
double num1, num2;
while (fscanf(in, "%lf%lf", &num1, &num2) == 2) {
fprintf(out, "%.2lf\n", num1 + num2);
}
}
```
该函数使用 fscanf 从文件 in 中读取两个实数,然后将它们相加并写入文件 out 中。每次循环时,先使用 fscanf 读取两个实数,如果读取成功则计算它们的和并使用 fprintf 写入文件 out 中,否则跳过该行数据。注意,使用 fscanf 读取实数时需要使用 %lf 格式说明符。此外,使用 fprintf 函数写入实数时,需要使用 %.2lf 格式说明符,保留两位小数。