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 — 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 — ファイルを削除
- scanf_conversion — mscanf, msscanf, mfscanf 変換指定子
Report an issue | ||
<< mfprintf | Files : Input/Output functions | mget >> |