# 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);

## 参照

- mclose
- meof
- mfprintf
- fprintfMat
- mfscanf
- fscanfMat
- mget
- mgetstr
- mopen
- mprintf
- mput
- mputstr
- mscanf
- mseek
- mtell
- mdelete