【发布时间】:2021-03-08 21:52:57
【问题描述】:
如何使用 fseek 查找任意记录并打印该记录?特别是第三条记录。
文件格式:
first name
last name
gpa
我的代码(假设文件已经存在):
typedef struct
{
char first [20], last[20];
double gpa;
} Student;
int main ()
{
Student student;
FILE* file = fopen ("gpa.dat", "r+");
fseek(file, sizeof(Student), SEEK_END);
fread(&student, sizeof(student), 1, file);
printf("Name: %s %s\nGPA: %lf\n", student.first, student.last, student.gpa);
fclose(file);
return 0;
}
所以如果第三条记录是
xxx
yyy
3.56
这就是我要打印的内容
【问题讨论】:
-
为什么必须使用
fseek来完成这项任务? -
是文本文件还是固定大小记录的二进制文件?
-
gpa.dat是如何创建的? -
fseek 以字节为单位移动文件指针,可以从文件的开头
SEEK_SET或任何当前位置SEEK_CUR或从结尾向后移动SEEK_END -
gpa.dat是通过从 stdin 获取输入然后使用 fwrite 创建的,如果这就是你的意思? @约翰尼莫普。它是一个文本文件,具有可增长的大小记录@Barmar。