sets current position in a binary file
mseek(n [,fd, flag])
a scalar: the offset in a number of bytes.
a scalar: a file descriptor returned by the function
mopen
. -1
stands for last opened file. Default value is
-1
.
a string: specifies the origin. Default value 'set'
.
The function mseek
sets the position of the next input or output operation on the stream fd
. The new position is at the signed distance given by n
bytes from the beginning, from the current position, or from the end of the file, according to the flag
value which can be 'set'
, 'cur'
or 'end'
. This is the reason why n
must be positive when flag
is equal to 'set'
.
mseek
allows the file position indicator to be
set beyond the end of the existing data in the file. If data is
later written at this point, subsequent reads of data in the gap
will return zero until data is actually written into the gap.
mseek
, by itself, does not extend the size of
the file.
file3=fullfile(TMPDIR,'test3.bin'); fd1= mopen(file3,'wb'); for i=1:10 mput(i,'d'); end mseek(0); mput(678,'d'); mseek(0,fd1,'end'); mput(932,'d'); mclose(fd1) fd1= mopen(file3,'rb'); res=mget(11,'d') res1=[1:11]; res1(1)=678;res1($)=932; if res1<>res then write(%io(2),'Bug'); end mseek(0,fd1,'set'); // trying to read more than stored data res1=mget(100,'d',fd1); if res1<>res then write(%io(2),'Bug'); end meof(fd1) mclearerr(fd1) mclose(fd1); file='test.bin' file2='test2.bin' fd1= mopen(file,'rb'); fd2= mopen(file2,'rb'); mseek(0); // Go to the begin of the last file open (file 2). Equal to mseek(0,fd2,'set') mseek(0,'end'); // Go to the end of the last file open (file 2). Equal to mseek(0,fd2,'end') mseek(0,fd1); // Go to the begin of file 1. Equal to mseek(0,fd1,'set') mseek(2,fd1,'cur'); // Set the position to the current position offset to 2. mclose(fd1); mclose(fd2); | ![]() | ![]() |