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
并向后开始结构块。
我是编程的新手。所以请帮助我。
编辑:谢谢你的回答。我要做的是搜索关键字(学生的卷号)并更新该学生的信息(姓名,地址,......)。更新的数据将成功替换以前的数据。请让我再问一个问题。有没有办法将新数据插入上一个数据之上而不是用旧数据替换它?
答案 0 :(得分:7)
此C代码表示将指针从当前位置[ftell(ptr)]移动到刚刚读取的结构块的开头。我对吗?
我想是的。
请告诉我如何使用SEEK_CUR并向后开始结构块。
您可以使用负偏移。
#include <stdio.h>
fseek (ptr, -sizeof student1, SEEK_CUR);
无论如何,你应该避免这些电话;它可能会很慢。使用相当顺序的阅读。
答案 1 :(得分:3)
尝试:
fseek(ptr, -sizeof(student1), SEEK_CUR);