Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.0.0 - 日本語


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 >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Mar 07 09:28:49 CET 2023