offset=ftell(ptr)-sizeof(student1);
fseek(ptr,offset,SEEK_SET);
fwrite(&student1,sizeof(student1),1,ptr);
This C code means move the pointer from the current position ftell(ptr)
to start of the just read structure block. Am I right?
If I'm right, can I use SEEK_CUR
instead of SEEK_SET
to go back to start of the structure block in the file?
Please show me how to use SEEK_CUR
and go backward to start of the structure block.
I'm newbie to programming. So please kindly help me.
Edit: Thank you for the answers. What I'm trying to do is to search for a keyword (Roll number of a student) and update this student's information (Name,Address,..). The updated datas are replaced the previous datas successfully. Please let me ask one more question. It there any way to insert the new data above the previous data instead of replacing it with old data?
This C code means move the pointer from the current position [ ftell(ptr) ] to start of the just read structure block. Am I right?
I think so.
Please show me how to use SEEK_CUR and go backward to start of the structure block.
You can use a negative offset.
#include <stdio.h>
fseek (ptr, -sizeof student1, SEEK_CUR);
Anyway, you should avoid these calls; it could be very slow. Use rather sequential reading.