バイナリファイルの中でカレントの位置を設定する.
mseek(n [,fd, flag])
スカラー: オフセット(単位:バイト数).
スカラー: mopen
関数により返されたファイル記述子.
-1
は直近にオープンされたファイルを意味します.
デフォルト値は-1
です.
文字列: 原点を指定. デフォルト値 'set'
.
関数 mseek
は,ストリームfd
上での
次の入力または出力処理の位置を設定します.
新たな位置は,符号付きの位置を表すバイト数n
で指定した位置となります.
この値の意味は, flag
の値,つまり,
'set'
, 'cur'
または 'end'
に基づき,先頭位置から,または,現在位置から,または,ファイル終端からとなります.
これが, flag
が 'set'
の場合に
n
を正としなければならない理由です.
mseek
により
ファイルの既存のデータの終端より後の部分にファイル位置インジケータを
設定することができるようになります.
データがこのような場所に書き込まれた時,
隙間にあるデータが読み込まれた場合に,
隙間に実際に書き込まれたデータに達するまでは
0 が返されます.
mseek
は,それ自体では,
ファイルの大きさを拡張しません.
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'); // 保存されたデータより多くのデータを読み込む res1=mget(100,'d',fd1); if res1<>res then write(%io(2),'Bug'); end meof(fd1) mclearerr(fd1) mclose(fd1); | ![]() | ![]() |