- Scilabヘルプ
- Files : Input/Output functions
- Directory
- Paths - Filenames
- copyfile
- deletefile
- dispfiles
- fileinfo
- findfiles
- fprintfMat
- fscanfMat
- getURL
- getmd5
- %io
- isfile
- listfiles
- listvarinfile
- maxfiles
- mclearerr
- mclose
- mdelete
- meof
- merror
- mfprintf
- mscanf
- mget
- mgetl
- mgetstr
- mopen
- movefile
- mput
- mputl
- mputstr
- mseek
- mtell
- newest
- save_format
- scanf
- scanf_conversion
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
mscanf
標準入力から入力を読み込む (C言語の scanf 関数へのインターフェイス)
mfscanf
ストリームへのポインタから入力を読み込む (C言語の fscanf 関数へのインターフェイス)
msscanf
文字列から入力を読み込む (C言語の sscanf 関数へのインターフェイス)
呼び出し手順
[n, v_1,..., v_m] = mfscanf([niter,]fd, format) L = mfscanf([niter,] fd,format) [n, v_1,..., v_m] = mscanf([niter,] format) L = mscanf([niter,]format) [n, v_1,..., v_m] = msscanf([niter,]str, format) L = msscanf([niter,] str, format)
引数
- format
残りのオペランドを書き込む際に使用されるフォーマットを記述する Scilab 文字列.
format
オペランドは, scanf_conversionに記述された C 言語のprintf
のフォーマット記述子にできるだけ 近くなるよう作成されています.- fd
mopen
により返された ファイル記述子. 値 -1 は直近にオープンされたファイルを指します.- str
Scilab 文字列または文字列ベクトル.
- niter
整数, フォーマットの使用回数.
- n
整数: 読み込まれたデータの数または データを読み込む前にEOLに達した場合は -1.
- v_i
各関数は文字を読み込み,
format
に基づき解釈し, 結果をその出力引数に保存します.n
個より多くの出力引数が指定された場合, 最後の変数v_n+1, ..., v_m
が空の行列に設定されます.- L
全てのデータが同種である場合, 戻り値の一つのベクトルに保存されます. そうでない場合,同じデータ型のシーケンスは 行列に保存され, 作成された全ての行列を含む (
cblock
型を有する)mlist
が返されます.
説明
mfscanf
関数はストリームfd
から文字を読み込みます.
mfscanf
関数は Scilabウインドウから
文字を読み込みます.
mfscanf
関数はScilab文字列
str
から文字を読み込みます.
オプション引数niter
は
フォーマットの反復使用回数を指定します.
1回の反復は出力行列に1つの行を出力します.
niter==-1
の場合,
関数はファイル終端まで反復処理を行ないます.
niter
のデフォルト値は 1です.
精度に関するコメント :
mfscanf
は,Cの関数fscanf
に基づいています.
'%f'
,
'%g'
, '%e'
をフォーマットに指定した場合,
データはfloatにキャストされ,Scilab変数に出力されます.
このScilab変数がdoubleの場合,精度が劣化する可能性があります.
このような場合は, '%lg'
フォーマットを使用する方が良いでしょう.
例
//---------------------------------------------------------- //-- 簡単な例 -- //---------------------------------------------------------- s='1 1.3' //文字列 [n,a,b]=msscanf(s,"%i %e") L=msscanf(s,"%i %e") //---------------------------------------------------------- //-- フォーマットのサンプル -- //---------------------------------------------------------- msscanf(" 12\n",'%c%c%c%c') //スキャン文字列 msscanf('0xabc','%x') //16進形式でスキャン msscanf('012345abczoo','%[0-9abc]%s') //[] 表記 // float および doubleを読み込み msscanf('4345.988','%g')-4345.988 // floatとしてスキャン msscanf('4345.988','%lg')-4345.988 // doubleとしてスキャン //---------------------------------------------------------- //-- 複数行のデータファイルをスキャン -- //---------------------------------------------------------- //データを有するファイルを作成 u=mopen(TMPDIR+'/foo','w'); t=(0:0.1:%pi)';mfprintf(u,"%6.3f %6.3f\n",t,sin(t)) mclose(u); u=mopen(TMPDIR+'/foo','r'); // 読み込むファイルをオープン //read the file line by line [n,a,b]=mfscanf(u,'%e %e') //最初の行に複数の出力引数構文を適用 l=mfscanf(u,'%e %e') //2行目に単一の出力引数構文を適用 //niterを使用して更に5つの行を読み込む l=mfscanf(5,u,'%e %e') //ファイル終端まで読み込むために niter=-1 を使用 l=mfscanf(-1,u,'%e %e') mclose(u); //ファイルを閉じる //---------------------------------------------------------- //-- scanning multi-line strings vectors -- //---------------------------------------------------------- //文字列ベクトルをスキャンするためにniterを使用 [n,Names,Ages]=msscanf(-1,["Alain 19";"Pierre 15";"Tom 12"],'%s %d') D=msscanf(-1,["Alain 19";"Pierre 15";"Tom 12"],'%s %d') typeof(D) Names=D(:,1) //文字列 Age=D(:,2) //数値
参照
- mclose — オープンされているファイルを閉じる
- meof — ファイルの終端に達したかどうかを確認する
- mfprintf — 変換,整形し,ファイルにデータを書き込む
- fprintfMat — 行列をファイルに書き込む
- mfscanf — 標準入力から入力を読み込む (C言語の scanf 関数へのインターフェイス)
- fscanfMat — テキストファイルから行列を読み込む
- mget — 指定したバイナリ形式で バイトまたはワードを読み込み, double に変換
- mgetstr — ファイルから文字列を読み込む
- mopen — ファイルをオープン
- mprintf — 変換, 整形し, Scilab主ウインドウにデータを書き込む
- mput — 指定したバイナリ形式でバイトまたはワードを書き込む
- mputstr — ファイルに文字列を書き込む
- mscanf
- mseek — バイナリファイルの中でカレントの位置を設定する.
- mtell — ファイル先頭基準でカレントバイトのオフセットを返す
- mdelete — ファイルを削除
- scanf_conversion — mscanf, msscanf, mfscanf 変換指定子
Report an issue | ||
<< mfprintf | Files : Input/Output functions | mget >> |