存入一个信息再读出(里面包含学号,姓名,成绩等,),把他们输入到一个文件再读出
#include <stdio.h>
#include <stdlib.h>
#define N 10 // 学生人数
// 学生信息的结构体
typedef struct student
{
int id; // 学号
char name[20]; // 姓名
float score; // 成绩
} Student;
int main()
{
// 声明并初始化学生信息数组
Student students[N] = {
{ 1, "Alice", 85.5 },
{ 2, "Bob", 90.0 },
{ 3, "Charlie", 88.0 },
{ 4, "Dave", 95.0 },
{ 5, "Eve", 91.5 },
{ 6, "Frank", 77.5 },
{ 7, "Gina", 80.0 },
{ 8, "Henry", 82.5 },
{ 9, "Ivy", 75.0 },
{ 10, "Jill", 93.0 }
};
// 打开文件 student.rec,如果文件不存在则创建它
FILE *fp = fopen("student.rec", "w+");
if (fp == NULL)
{
perror("Error opening file");
return 1;
}
// 将学生信息写入文件
for (int i = 0; i < N; i++)
{
fprintf(fp, "%d %s %f\n", students[i].id, students[i].name, students[i].score);
}
// 重置文件指针位置,准备从文件中读取数据
rewind(fp);
// 从文件中读取学生信息
for (int i = 0; i < N; i++)
{
fscanf(fp, "%d %s %f", &students[i].id, students[i].name, &students[i].score);
}
// 关闭文件
fclose(fp);
// 在屏幕上显示学生信息
for (int i = 0; i < N; i++)
{
printf("%d %s %.1f\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
解题思路如下:
在 C 语言中,可以使用结构体来存储学生信息。首先,定义一个名为 Student 的结构体,包含学号、姓名和成绩三个字段。
在程序的开头,声明一个名为 students 的学生信息数组,并使用初始化列表初始化数组中的元素。
打开文件 student.rec,如果文件不存在则创建它。
循环遍历学生信息数组,使用函数 fprintf() 将每个学生的信息写入文件。
使用函数 rewind() 重置文件指针的位置,准备从文件中读取数据。
再次循环遍历学生信息数组,使用函数 fscanf() 从文件中读取每个学生的信息。
关闭文件。
循环遍历学生信息数组,使用函数 printf() 在屏幕上显示每个学生的信息。
结束程序。
详细的解决思路和示例代码如下:
#include <stdio.h>
#include <stdlib.h>
#define N 10 // 学生人数
// 学生信息的结构体
typedef struct student
{
int id; // 学号
char name[20]; // 姓名
float score; // 成绩
} Student;
int main()
{
// 声明并初始化学生信息数组
Student students[N] = {
{ 1, "Alice", 85.5 },
{ 2, "Bob", 90.0 },
{ 3, "Charlie", 88.0 },
{ 4, "Dave", 95.0 },
{ 5, "Eve", 91.5 },
{ 6, "Frank", 77.5 },
{ 7, "Gina", 80.0 },
{ 8, "Henry", 82.5 },
{ 9, "Ivy", 75.0 },
{ 10, "Jill", 93.0 }
};
// 打开文件 student.rec,如果文件不存在则创建它
FILE *fp = fopen("student.rec", "w+");
if (fp == NULL)
{
perror("Error opening file");
return 1;
}
// 将学生信息写入文件
for (int i = 0; i < N; i++)
{
fprintf(fp, "%d %s %f\n", students[i].id, students[i].name, students[i].score);
}
// 重置文件指针位置,准备从文件中读取数据
rewind(fp);
// 从文件中读取学生信息
for (int i = 0; i < N; i++)
{
fscanf(fp, "%d %s %f", &students[i].id, students[i].name, &students[i].score);
}
// 关闭文件
fclose(fp);
// 在屏幕上显示学生信息
for (int i = 0; i < N; i++)
{
printf("%d %s %.1f\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}