给我个c语言代码,要求对一个班级学生成绩的管理,能让一个班级成绩文件复制到另一个文件内容的功能。
时间: 2024-02-15 11:04:47 浏览: 20
好的,这是一个简单的班级学生成绩管理系统的代码示例,包括了成绩文件的复制功能。请注意,这只是一个示例代码,可能需要根据实际需求进行修改和完善。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_NUM 100
struct student{
char name[MAX_NAME_LEN];
int num;
int score;
};
void save_file(struct student s[], int n);
void copy_file(char *filename1, char *filename2);
int main(){
struct student stu[MAX_NUM];
int i, n;
char filename1[20], filename2[20];
printf("请输入学生人数(不超过100人):");
scanf("%d", &n);
getchar(); // 把回车符吃掉
// 输入学生信息
for (i = 0; i < n; i++){
printf("请输入第%d个学生的姓名、学号和成绩(用空格隔开):", i+1);
scanf("%s %d %d", stu[i].name, &stu[i].num, &stu[i].score);
getchar(); // 把回车符吃掉
}
// 保存学生信息到文件
save_file(stu, n);
// 复制文件
printf("请输入要复制的文件名:");
scanf("%s", filename1);
printf("请输入目标文件名:");
scanf("%s", filename2);
copy_file(filename1, filename2);
printf("操作完成!\n");
return 0;
}
// 将学生信息保存到文件中
void save_file(struct student s[], int n){
FILE *fp;
int i;
fp = fopen("students.dat", "wb");
if (fp == NULL){
printf("文件打开失败!\n");
exit(1);
}
for (i = 0; i < n; i++){
fwrite(&s[i], sizeof(struct student), 1, fp);
}
fclose(fp);
}
// 复制文件
void copy_file(char *filename1, char *filename2){
FILE *fp1, *fp2;
char ch;
fp1 = fopen(filename1, "r");
if (fp1 == NULL){
printf("文件打开失败!\n");
exit(1);
}
fp2 = fopen(filename2, "w");
if (fp2 == NULL){
printf("文件打开失败!\n");
exit(1);
}
while ((ch = fgetc(fp1)) != EOF){
fputc(ch, fp2);
}
fclose(fp1);
fclose(fp2);
}
```
这段代码中,我们定义了一个 `student` 结构体来存储学生的姓名、学号和成绩。在主函数中,我们先让用户输入学生信息,然后调用 `save_file` 函数将学生信息保存到文件中。接着,用户输入要复制的文件名和目标文件名,调用 `copy_file` 函数完成文件复制操作。`copy_file` 函数中使用了文件指针和文件操作函数来读取和写入文件。