MATLAB Function Reference    
sscanf

書式を制御して文字列を読み込み

表示

詳細

A = sscanf(s,format) は、MATLAB の文字列変数 s からデータを読み込み、指定した文字列 format に従って変換し、行列 A に出力します。format は、読み込みデータの書式を指定した文字列です。詳細は、"注意" を参照してください。sscanf は、ファイルからではなく文字列変数からデータを読み込むという点で、fscanf と異なります。

A = sscanf(s,format,size) は、size で指定した量のデータを読み込み、指定した文字列format に従って変換します。size は、読み込みデータ量を指定する引数です。有効オプションは、つぎの表の通りです。

n
n 個の要素を列ベクトルに読み込みます。
inf
ファイルの最後まで読み込み、ファイル内と同じ要素数をもつ列ベクトルを出力します。
[m,n]
mn 列の行列が満たされるまで読み込み、列順に行列を満たしていきます。n は、Inf でも可能ですが、m は、Inf にできません。

行列 A がキャラクタ変換のみの結果であり、size が、[M,N] の型でない場合、行ベクトルが出力されます。

sscanf は、C 言語の同名の scanf() fscanf() とは、行列引数を出力するためにベクトル化されるという点で異なります。文字列 format は、ファイルの終端(EOF)に達するまで、または、size で指定したデータ量が読み込まれるまで、繰り返されます。

[A,count,errmsg,nextindex] = sscanf(...) は、MATLAB 文字列変数 s からデータを読み込み、指定した文字列 format に従って、変換し、行列 A に出力します。count は、完全に読み込まれた要素数を出力するオプションの出力引数です。errmsg は、エラーが起きたときにエラーメッセージ文字列を出力し、エラーが起きなかったときに空行列を出力するオプションの出力引数です。nextindex は、s でスキャンされるキャラクタ数よりも 1 つ多く指定されるオプションの出力引数です。

注意

MATLAB が、指定したファイルを読み込むとき、ファイル内のデータを書式指定文字列に適合させようとします。適合すれば、データは行列の列の順に行列に書き込まれます。一部分が適合した場合は、適合したデータだけが行列に書き込まれ、読み込み操作を中止します。

文字列 format は、通常のキャラクタや変換を指定する文字列からなります。変換の仕様は、適合させるデータタイプを示し、キャラクタ %、オプションでフィールドの幅、変換キャラクタを含み、以下のように構成されます。

% と変換キャラクタの間に、つぎのキャラクタを 1 つ以上挿入することができます。
アスタリスク(*)
適合した値をスキップします。値が適合すれば、その値は出力行列に保存されません。
桁数を指定する文字列
最大のフィールド幅の指定。
文字
受け取るオブジェクトのサイズを指定します。たとえば、単精度に対する h は、%hd で単精度整数を指定します。倍精度に対する l は、%ld で倍精度整数を、%lg で倍精度浮動小数点数を指定します。

変換キャラクタは、つぎの通りです。
%c
キャラクタのシーケンス。フィールドの幅で指定された数です。
%d
10 進数
%e, %f, %g
浮動小数点数
%i
符号付き整数
%o
符号付き 8 進数
%s
空白キャラクタのない文字列
%u
符号付き 10 進数
%x
符号付き 16 進数
[...]
キャラクタのシーケンス(スキャンリスト)

%s が使われるときは、読み込む要素は、1 つのキャラクタをもつ複数の MALTAB 行列の要素を使います。空白キャラクタを読み込むときは、%c を使います。%s は、すべての空白をスキップします。

キャラクタと数値変換指定を一緒に使うと、結果の行列は数値になり、キャラクタは行列の要素毎に、1 つのキャラクタの ASCII 値として表わされます。

書式指定文字列の詳細は、C 言語リファレンスマニュアルの scanf() fscanf() のルーチンを参照してください。

例題

ステートメント

は、e と pi の精度のよくない近似値を含む 2 つの要素からなるベクトルを作成します。

参考

eval, sprintf, textread


 squeeze stairs