mseek
バイナリファイルの中でカレントの位置を設定する.
呼び出し手順
mseek(n [,fd, flag])
引数
- n
スカラー: オフセット(単位:バイト数).
- fd
スカラー:
mopen
関数により返されたファイル記述子.-1
は直近にオープンされたファイルを意味します. デフォルト値は-1
です.- flag
文字列: 原点を指定. デフォルト値
'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);
参照
- mclose — オープンされているファイルを閉じる
- meof — ファイルの終端に達したかどうかを確認する
- mfprintf — converts, formats, and writes data to a file
- fprintfMat — 行列をファイルに書き込む
- mfscanf — 標準入力から入力を読み込む (C言語の scanf 関数へのインターフェイス)
- fscanfMat — テキストファイルから行列を読み込む
- mget — parses numbers in a binary file and returns them as decimals
- mgetstr — ファイルから文字列を読み込む
- mopen — ファイルをオープン
- mprintf — 変換, 整形し, Scilab主ウインドウにデータを書き込む
- mput — 指定したバイナリ形式でバイトまたはワードを書き込む
- mputstr — write a single text in an open file
- mscanf
- mseek — バイナリファイルの中でカレントの位置を設定する.
- mtell — ファイル先頭基準でカレントバイトのオフセットを返す
- mdelete — ファイルを削除
Report an issue | ||
<< mputstr | Files : Input/Output functions | mtell >> |