How to use SEEK_CUR on a FILE*

Min Naing Oo picture Min Naing Oo · Nov 11, 2012 · Viewed 28.3k times · Source
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?

Answer

md5 picture md5 · Nov 11, 2012

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.