Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский

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

Scilabヘルプ >> Files : Input/Output functions > mscanf

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 変換指定子
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Wed Apr 01 10:25:03 CEST 2015