用C语言实现1、从键盘上输入一行串字符,保存到指定文件夹中,文件名为f1.txt。2、打开第1题建立的文本文件f1.txt,在屏幕上显示其内容。已知一个数据文件f.txt中保存了5个学生的计算机等级考试成绩,包括学号、姓名和分数,文件内容如下,请将文件的内容读出并显示到屏幕中。然后将成绩最低的和成绩最高的学生信息输出到文件maxmin.txt中 301101 张文 91 301102 陈慧 85 301103 王卫东 76 301104 郑伟 69 301105 郭温涛 55
时间: 2024-02-22 22:55:07 浏览: 79
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 功能1:从键盘上输入一行字符串,保存到指定文件夹中,文件名为f1.txt
void saveStringToFile() {
FILE *fp;
char str[1000];
fp = fopen("f1.txt", "w"); // 打开文件
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
printf("请输入一行字符串:");
fgets(str, 1000, stdin); // 从键盘读入一行字符串
fprintf(fp, "%s", str); // 将字符串写入文件
fclose(fp); // 关闭文件
printf("字符串已保存到文件f1.txt中。\n");
}
// 功能2:打开文件f1.txt,在屏幕上显示其内容
void displayFileContent() {
FILE *fp;
char ch;
fp = fopen("f1.txt", "r"); // 打开文件
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
printf("文件f1.txt的内容为:\n");
while ((ch = fgetc(fp)) != EOF) { // 逐个字符读取文件内容,并输出到屏幕上
putchar(ch);
}
fclose(fp); // 关闭文件
}
// 功能3:读取文件f.txt中的学生成绩,并输出最高分和最低分的学生信息到文件maxmin.txt中
void readScoreFromFile() {
FILE *fp, *fp2;
int i, score, max = -1, min = 101, maxIndex, minIndex;
char id[10], name[20];
fp = fopen("f.txt", "r"); // 打开文件
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
for (i = 0; i < 5; i++) { // 逐个读取学生信息,并输出到屏幕上
fscanf(fp, "%s %s %d", id, name, &score);
printf("%s\t%s\t%d\n", id, name, score);
if (score > max) { // 记录最高分和最高分学生的信息
max = score;
maxIndex = i;
}
if (score < min) { // 记录最低分和最低分学生的信息
min = score;
minIndex = i;
}
}
fclose(fp); // 关闭文件
fp2 = fopen("maxmin.txt", "w"); // 打开文件
if (fp2 == NULL) {
printf("无法打开文件\n");
exit(1);
}
fprintf(fp2, "最高分学生:%d\t", maxIndex+1);
fseek(fp, maxIndex*17, SEEK_SET); // 将文件指针定位到最高分学生的信息
fscanf(fp, "%s %s %d", id, name, &score);
fprintf(fp2, "%s\t%s\t%d\n", id, name, score);
fprintf(fp2, "最低分学生:%d\t", minIndex+1);
fseek(fp, minIndex*17, SEEK_SET); // 将文件指针定位到最低分学生的信息
fscanf(fp, "%s %s %d", id, name, &score);
fprintf(fp2, "%s\t%s\t%d\n", id, name, score);
fclose(fp2); // 关闭文件
printf("最高分和最低分的学生信息已保存到文件maxmin.txt中。\n");
}
int main() {
saveStringToFile();
displayFileContent();
readScoreFromFile();
return 0;
}
```
这段代码实现了三个功能:
1. 从键盘上输入一行字符串,保存到指定文件夹中,文件名为f1.txt;
2. 打开文件f1.txt,在屏幕上显示其内容;
3. 读取文件f.txt中的学生成绩,并输出最高分和最低分的学生信息到文件maxmin.txt中。
具体实现过程见代码注释。需要注意的是,在读取学生成绩时,我们使用了fscanf函数来逐个读取学生信息,其中第一个参数是文件指针,后面的参数是格式化字符串,按照文件中的格式逐个读取学生的学号、姓名和成绩。在输出最高分和最低分的学生信息到文件maxmin.txt中时,我们使用了fseek函数来将文件指针定位到最高分和最低分的学生信息的位置,然后再用fprintf函数将学生信息写入文件中。
阅读全文