<1> “23 学生成绩普涨10分” d盘根目录下存在一个文本文件my.txt,里面存放了10个学生的成绩,一行一个成绩,从文件中读取学生的成绩,每个成绩都加10分后,保存到原文件中。 提示: 注意d:\my.txt在fopen中如何表示;—> “d:\\my.txt” 文件打开方式 —> r+ 从文件中读取数据,直到文件结束,如何判断文件结束—> feof() 将增加10后的数据保存到原文件时,要保证从文件头开始,如何使文件指针回到文件头—> rewind() 在写数据时,一定要避免在最后一个数据写完后,再写一个回车,否则下次在操作时可能出错。 用c++完成上述要求并且用函数
时间: 2024-03-18 17:41:44 浏览: 87
以下是一个实现上述要求的函数:
```c++
#include <iostream>
#include <fstream>
using namespace std;
void increase_grades() {
// 打开文件
FILE *fp = fopen("d:\\my.txt", "r+");
if (fp == NULL) {
cout << "无法打开文件" << endl;
return;
}
// 逐行读取并加10分
float grade;
while (fscanf(fp, "%f", &grade) != EOF) {
grade += 10;
// 将文件指针移到当前行的开头
fseek(fp, -sizeof(float), SEEK_CUR);
// 写入修改后的成绩
fprintf(fp, "%.2f", grade);
// 将文件指针移到下一行开头
fseek(fp, sizeof(float), SEEK_CUR);
}
// 将文件指针移到文件开头
rewind(fp);
// 关闭文件
fclose(fp);
}
int main() {
increase_grades();
return 0;
}
```
注:在写入数据时,需要注意控制小数位数,以免出现舍入误差。此处使用了 `%.2f` 格式字符串,保留两位小数。
阅读全文