4
offset=ftell(ptr)-sizeof(student1);
fseek(ptr,offset,SEEK_SET);
fwrite(&student1,sizeof(student1),1,ptr);

此 C 代码表示将指针从当前位置移动ftell(ptr)到刚刚读取的结构块的开头。我对吗?

如果我是对的,我可以使用SEEK_CUR而不是SEEK_SET回到文件中结构块的开头吗?

请告诉我如何使用SEEK_CUR并返回到结构块的开始。

我是编程新手。所以请帮助我。

编辑:谢谢你的答案。我要做的是搜索关键字(学生的卷号)并更新该学生的信息(姓名,地址,..)。更新的数据成功替换了之前的数据。请让我再问一个问题。有什么方法可以在以前的数据之上插入新数据而不是用旧数据替换它?

4

2 回答 2

7

此 C 代码意味着将指针从当前位置 [ ftell(ptr) ] 移动到刚刚读取的结构块的开头。我对吗?

我认同。

请告诉我如何使用 SEEK_CUR 并返回到结构块的开始。

您可以使用负偏移量。

#include <stdio.h>

fseek (ptr, -sizeof student1, SEEK_CUR);

无论如何,你应该避免这些调用;它可能很慢。使用相当顺序的阅读。

于 2012-11-11T10:55:33.487 回答
3

尝试:

fseek(ptr, -sizeof(student1), SEEK_CUR);
于 2012-11-11T10:54:33.533 回答