negative offset

markyjj's Avatar, Join Date: Dec 2005
Go4Expert Member
Could someone please help me with the following code:

Inout_file.seekp(((long)-1 * sizeof(int)), ios::cur);
// offset // // mode//

This code is used to move the offset back 4 bytes from the 12th byte after replacing a value in the list. The above offset is -4 in order to move the offset back and this results in the offset now being at the 8th byte. I cant understand why the offset is -4 though. Is this to do with the ‘long’ and what is the -1 for?. Also this code is worked on the basis that integers are 4 bytes.

Hope that anyone can help…thanks
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
The seekp member function sets this pointer and thus provides random-access disk file output.

Now about the code You are passing the first parameter as
-1 * sizeof(int)
Which is
-1 * 4 [As you have told integer is 4 bytes]
And so the result becomes
-4 and so seekp moves the pointer 4 bytes in the reverse direction and so it moves from 12th to 8th byte.

Shabbir Bhimani