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

Change language to:
English - Français - Português - Русский

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

Scilab help >> Files : Input/Output functions > mopen

mopen

ファイルをオープン

呼び出し手順

[fd,err]=mopen(file [, mode, swap ])

パラメータ

file

文字列. オープンするファイルのパス名.

mode

ファイルが読み込み(r), 書き込み (w), または追加 (a) のどれか, ファイルが更新用にオープンされるかどうか(+)を制御する文字列. mode にはバイナリファイルを示す b パラメータを含むことも可能です.

swap

スカラー. swap が存在し, swap=0の場合, 自動バイトスワップは無効になります.

err

スカラー. エラーインジケータ. merror参照.

fd

スカラー. mopen関数によい返された fdパラメータがファイル記述子(正の整数)として返されます.

説明

mopen は,C言語のfopen プロシージャと互換の方法でファイルをオープンするために 使用できます. swap引数が指定されない場合, ファイルが"リトルインディアン IEEE 形式"でコード化されていると 仮定されます. プロセッサのIEEE形式と一致する必要がある場合, データはスワップされます.

modeパラメータはストリームに許可される アクセスを制御します. パラメータには以下の値の一つを指定することができます. この値のリストの中で, b文字はバイナリファイルを示します.

r

ファイルを読み込み用にオープン.

rb

バイナリファイルを読み込み用にオープン.

rt

テキストファイルを読み込み用にオープン.

w

書き込み用に新規ファイルを作成,または ファイルを長さ0に縮める.

wb

書き込み用にバイナリファイルを作成,または ファイルを長さ0に縮める.

wt

書き込み用にテキストファイルを作成,または ファイルを長さ0に縮める.

a または ab

追記 (ファイル終端への書込み用にファイルをオープン, ファイルを書き込み用に作成).

r+ または r+b

更新用にファイルをオープン (読み込みおよび書き込み).

w+ または w+b

長さ0に縮めるまたは更新用にファイルを作成.

a+ または a+b

追記 (更新用にファイルをオープンし, ファイルの終端に書き込み, または書き込み用にファイルを作成).

更新用にファイルをオープンする際, 結果のストリームに入力および出力の両方の処理を行うことができます. しかし,ファイル中の位置決め処理(mseek() 関数)を行わずに 出力処理を入力処理の直後に行うことはできません. また,入力処理がファイルの終端に達しない限り, ファイルの位置決め処理を中断せずに 入力処理を出力処理の直後に行うことはできません.

ファイルを追記用にオープンする場合(つまり,modeパラメータが a または a+ の場合),ファイルにすでにある情報を上書きすることは できません. fseek()関数により, ファイルの任意の位置にファイルポインタを移動することができますが, 出力をファイルに書き込む際に,カレントのファイルポインタは無視されます. 全ての出力はファイルの終端に書き込まれ, ファイル位置は出力の末尾に移動されます.

functionsのようにFortranと互換性のある方法でファイルをオープンするには, file関数を使用してください.

// SCI+'/ACKNOWLEDGEMENTS'をテキスト,読込みのみとしてオープン
            fd_r = mopen(SCI+'/ACKNOWLEDGEMENTS','rt')
            
            // fd_rから5行読み込む
            mgetl(fd_r, 5)
            
            // ファイルを読み込む他の方法
            // 5つのワードを読み込む
            mfscanf(5,fd_r,'%s')
            
            // テキスト,読込みのみのSCI+'/ACKNOWLEDGEMENTS'のファイル記述子を閉じる
            mclose(fd_r);
// ファイルをテキスト/書込みプロパティでオープン
            fd_w = mopen(TMPDIR+'/write.txt','wt');
            
            // fd_w に1行書き込み
            mputl('This is a line of text', fwd_w);
            mclose(fd_w);
            
            // テキスト読み込み 
            fd_r2 = mopen(TMPDIR+'/write.txt','rt');
            mgetl(fd_r2) 
            mclose(fd_r2);
// 書き込んだファイルをバイナリとして読み込む
            
            // まずファイルに書き込む
            fd_wb = mopen(TMPDIR+'/writeread.bin','wb')
            
            // バイナリとして値を出力
            mput(2003,'l',fd_wb);
            mput(2008,'i',fd_wb);
            mput(2012,'s',fd_wb);
            mput(98,'c',fd_wb);
            
            // TMPDIR+'/writeread.bin'を指すファイル記述子を閉じる
            mclose(fd_wb);
            
            // ファイルを読み込む
            fd_rb = mopen(TMPDIR+'/writeread.bin','rb')
            
            mget(fd_rb, 'l')
            mget(fd_rb, 'i')
            mget(fd_rb, 's')
            mget(fd_rb, 'c')
            
            mclose(fd_rb)

参照

  • mclose — オープンされているファイルを閉じる
  • merror — ファイルアクセスに関するエラーインジケータを調べる
  • meof — ファイルの終端に達したかどうかを確認する
  • mfprintf — 変換,整形し,ファイルにデータを書き込む
  • fprintfMat — 行列をファイルに書き込む .
  • mfscanf — 標準入力から入力を読み込む (C言語の scanf 関数へのインターフェイス)
  • fscanfMat — テキストファイルから行列を読み込む.
  • mget — 指定したバイナリ形式で バイトまたはワードを読み込み, double に変換
  • mgetl — アスキーファイルから行を読み込む
  • mgetstr — 文字列を読み込む
  • mprintf — 変換, 整形し, Scilab主ウインドウにデータを書き込む
  • mput — 指定したバイナリ形式でバイトまたはワードを書き込む
  • mputl — アスキーファイルに文字列を書き込む
  • mputstr — ファイルに文字列を書き込む
  • mscanf
  • mseek — バイナリファイルの中でカレントの位置を設定する.
  • mtell — バイナリファイルの管理
  • mdelete — ファイルを削除
Report an issue
<< mgetstr Files : Input/Output functions movefile >>

Copyright (c) 2022-2024 (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:
Mon Oct 01 17:40:33 CEST 2012