Min Naing Oo
Min Naing Oo

Reputation: 1095

How to use SEEK_CUR on a FILE*

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?

Upvotes: 5

Views: 36205

Answers (2)

md5
md5

Reputation: 23699

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.

Upvotes: 7

trojanfoe
trojanfoe

Reputation: 122391

try:

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

Upvotes: 3

Related Questions