如何在文件上使用SEEK_CUR *

时间:2012-11-11 10:52:52

标签: c fseek

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并向后开始结构块。

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

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

2 个答案:

答案 0 :(得分:7)

  

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

我想是的。

  

请告诉我如何使用SEEK_CUR并向后开始结构块。

您可以使用负偏移。

#include <stdio.h>

fseek (ptr, -sizeof student1, SEEK_CUR);

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

答案 1 :(得分:3)

尝试:

fseek(ptr, -sizeof(student1), SEEK_CUR);