高级语言程序设计课程第十次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx
这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/15596
学号:<052301346>
姓名:<郑积超>
作业内容
1. 编写一个程序,将一个文件的内容复制到另一个文件中

同目录下test1.txt和test2.txt


2. 编写一个程序,统计一个文本文件中的字符数
test1.txt内容同上题

3. 编写一个程序,读取一个文本文件的内容,并在控制台上显示

4. 编写一个程序,向一个文本文件的末尾追加一行文本。

追加后test1.txt的内容

5. 编写一个程序,读取一个文本文件,删除文件中的特定行(例如,包含特定单词的行),并将结果保存到新文件中
#pragma warning(disable : 4996)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_LINE_LENGTH 1024
#define SEARCH_STRING "test1"
int main() {
FILE* inputFile, * outputFile;
char line[MAX_LINE_LENGTH];
int lineCount = 0;
int removedCount = 0;
inputFile = fopen("test1.txt", "r");
if (inputFile == NULL) {
printf("错误:无法打开 test1.txt\n");
return 1;
}
outputFile = fopen("test2.txt", "w");
if (outputFile == NULL) {
printf("错误:无法创建或写入 test2.txt\n");
fclose(inputFile);
return 1;
}
printf("正在搜索并删除包含 \"%s\" 的行...\n", SEARCH_STRING);
while (fgets(line, sizeof(line), inputFile) != NULL) {
lineCount++;
if (strstr(line, SEARCH_STRING) == NULL) {
fputs(line, outputFile);
}
else {
removedCount++;
printf("删除第 %d 行: %s", lineCount, line);
}
}
fclose(inputFile);
fclose(outputFile);
return 0;
}
原test1.txt内容

删除带有test1行的运行结果

新text2.txt内容

6. 计算并显示一个文件的大小(以字节为单位),要求使用ftell

7. 有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"student.txt"中
#pragma warning(disable:4996)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
char studentID[20];
char name[50];
float scores[3];
float average;
};
void inputStudent(struct Student* stu);
void calculateAverage(struct Student* stu);
void saveToFile(struct Student students[], int count);
int main() {
struct Student students[5];
int i;
for (i = 0; i < 5; i++) {
printf("\n--- 请输入第%d个学生的信息 ---\n", i + 1);
inputStudent(&students[i]);
calculateAverage(&students[i]);
}
saveToFile(students, 5);
printf("已成功录入 %d 名学生信息\n", 5);
return 0;
}
void inputStudent(struct Student* stu) {
printf("学号: ");
scanf("%s", stu->studentID);
printf("姓名: ");
scanf("%s", stu->name);
printf("请输入3门课的成绩(用空格分隔):\n");
printf("第一门课成绩: ");
scanf("%f", &stu->scores[0]);
printf("第二门课成绩: ");
scanf("%f", &stu->scores[1]);
printf("第三门课成绩: ");
scanf("%f", &stu->scores[2]);
while (getchar() != '\n');
}
void calculateAverage(struct Student* stu) {
stu->average = (stu->scores[0] + stu->scores[1] + stu->scores[2]) / 3.0;
}
void saveToFile(struct Student students[], int count) {
FILE* file;
int i, j;
file = fopen("student.txt", "w");
if (file == NULL) {
printf("错误:无法创建或写入 student.txt 文件\n");
printf("请检查文件权限或磁盘空间\n");
exit(1);
}
fprintf(file, "========== Student Score Table==========\n");
fprintf(file, "ID\tName\t\tScore1\tScore2\tScore3\tAvgScore\n");
fprintf(file, "-----------------------------------------\n");
for (i = 0; i < count; i++) {
fprintf(file, "%s\t%s\t\t",
students[i].studentID, students[i].name);
for (j = 0; j < 3; j++) {
fprintf(file, "%.1f\t", students[i].scores[j]);
}
fprintf(file, "%.2f\n", students[i].average);
}
fprintf(file, "-----------------------------------------\n");
fclose(file);
}

student.txt

总结与思考
学会了对文件基本读写操作

浙公网安备 33010602011771号