Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português -

Please note that the recommended version of Scilab is 6.0.2. This page might be outdated.
See the recommended documentation of this function

Scilab manual >> Files : Input/Output functions > mseek

mseek

バイナリファイルの中でカレントの位置を設定する.

呼び出し手順

mseek(n [,fd, flag])

パラメータ

n

正のスカラー: 原点からのオフセット(単位:バイト数).

fd

スカラー. mopen関数により返されたfd パラメータ . デフォルトは -1 で,直近にオープンされたファイルを意味します.

flag

文字列. 原点を指定. デフォルト値: 'set'.

説明

関数 mseek() は,ストリームfd上での 次の入力または出力処理の位置を設定します. 新たな位置は, flag の値, つまり, 'set', 'cur' または 'end' に基づき,先頭位置からまたは 現在位置からまたはファイル終端からの符号付きの位置を表す バイト数nで指定した位置となります.

mseek() により ファイルの既存のデータの終端より後の部分にファイル位置インジケータを 設定することができるようになります. データがこのような場所に書き込まれた時, 隙間にあるデータが読み込まれた場合に, 隙間に実際に書き込まれたデータに達するまでは 0 が返されます. mseek(), はそれ自体では, ファイルの大きさを拡張しません.

file3='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 ;write(%io(2),'Bug');end;
mseek(0,fd1,'set');

// 保存されたデータより多くのデータを読み込もうとする 
res1=mget(100,'d',fd1);
if res1<>res ;write(%io(2),'Bug');end;
meof(fd1)
mclearerr(fd1)
mclose(fd1);
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Wed Jan 26 16:25:11 CET 2011