主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

sscanf

書式付きデ,タの文字列からの読み込み

説明

一个= sscanf (strformatSpec)strからデ,タを読み取り,formatSpecで指定した書式に従って変換し,その結果を配列で返します。strは文字配列または字符串スカラ,です。関数sscanfformatSpecstrの一連の文字に繰り返し適用します。この処理は,strの最後に達するか,formatSpecが一連の文字と一致しなかった場合に終了します。strが複数行がある文字配列である場合,関数sscanfは列順に文字を読み取ります。

一个= sscanf (strformatSpecsizeA)は,出力配列のサsizeAに設定し,デ,タをstrから出力配列に読み取ります。sizeAは正の整数であるか,(mn)の形式でなければなりません(nは正の整数)。

また,一个n= sscanf(___)は,sscanf一个に正常に読み取った要素の数を返します。

一个nerrmsg= sscanf(___)はまた,sscanfがすべてのデ,タを一个に読み取れなかった場合に,エラ,メッセ,ジを含む文字ベクトルを返します。sscanfが成功すると,errmsgは空の文字ベクトルとなります。

一个nerrmsgnextindex= sscanf(___)はまた,sscanfがスキャンした最後の文字の直後にある,strの位置の@ @ンデックスを返します。

すべて折りたたむ

複数の数値を空白文字で区切って表す文字ベクトルを作成します。この文字ベクトルを数値の列ベクトルに変換します。sscanfは空白文字を数値間の区切り文字として扱います。

空空的='2.7183 3.1416 0.0073'
CHR = '2.7183 3.1416 0.0073'
A = sscanf(chr,' % f ')
一个=3×12.7183 3.1416 0.0073

複数の数値を表す字符串を作成し,sscanfを使用して変換します。出力配列のサイズを指定します。

R2017a以降,二重引用符を使用して字符串を作成できるようになりました。

str ="2.7183 3.1416 0.0073"
STR = "2.7183 3.1416 0.0073"
A = sscanf(str,' % f '1, [3])
一个=1×32.7183 3.1416 0.0073

strを2行2列の行列に変換します。strは3の数値しか表さないため,sscanf一个を0でパディングし,行列を埋めます。

A = sscanf(str,' % f '(2 - 2))
一个=2×22.7183 0.0073 3.1416 0

空白文字で区切られた数値を含む字符串を作成します。sscanfがこの字符串を数値に変換する際に出力配列に挿入した要素をカウントします。

R2017a以降,二重引用符を使用して字符串を作成できるようになりました。

str ="78 72 64 66 49"
STR = "78 72 64 66 49"

出力配列一个の要素をカウントします。% d演算子を使用してこの字符串の数値を変換します。% dは空白文字で区切られた整数と一致します。一个の要素数を返すには,2番目の出力引数を指定します。

[A,n] = sscanf(str,' % d ')
一个=5×178 72 64 66 49
N = 5

字符串を作成し,そこからデ,タを読み取ります。sscanfが入力字符串全体を変換できなかった場合,エラ,メッセ,ジを表示します。

R2017a以降,二重引用符を使用して字符串を作成できるようになりました。

str =3.14159是圆周率的前六位数字
STR = "3.14159是圆周率的前6位"

strの数値を変換します。strには% fと一致しない文字も含まれているため,sscanfはエラ,メッセ,ジを返します。sscanf“是”という単語を検出すると,この単語を数値に変換できないため,処理を停止します。

[A,n,errmsg] = sscanf(str,' % f ')
A = 3.1416
N = 1
errmsg = '格式匹配失败。'

文字ベクトルを作成し,そこからデ,タを読み取ります。sscanfが入力全体を変換できなかった場合,sscanfが停止した位置の直後の@ @ンデックスを返します。このesc escンデックスを使用して,スキャンされなかった入力を表示します。

空空的=3.14159是圆周率的前6位
CHR = '3.14159是圆周率的前6位数字'

空空的内のデ,タを変換します。ンデックスを返します。

[A,~,~,nextindex] = sscanf(chr,' % f ')
A = 3.1416
Nextindex = 9

空空的の文字のうsscanfがスキャンしなかったものを表示します。

空空的nextindex:结束)
Ans = '是圆周率的前六位数字'

複数の温度を含む字符串を作成します。温度は度記号と文字Fで表します。この温度を数値配列に変換します。

R2017a以降,二重引用符を使用して字符串を作成できるようになりました。度記号 (char (176))を挿入するには,関数方法を使用します。

T =“78f 72f 64f 66f 49f”;degreeSymbol = char(176);T = insertBefore(T,“F”degreeSymbol)
T = "78°f 72°f 64°f 66°f 49°f "

温度を数値配列として返します。

A = sscanf(T,strcat(“% d”degreeSymbol,“F”))
一个=5×178 72 64 66 49

入力引数

すべて折りたたむ

スキャンする入力テキスト。文字配列または字符串スカラとして指定します。strが文字配列の場合,行が複数存在することがあり,sscanfは列順に文字を読み取ります。

デ,タ型:字符|字符串

入力フィ,ルドの書式。書式演算子として指定します。formatSpecは一重引用符で囲まれた文字ベクトル,または字符串スカラ,にすることができます。

数値フィ,ルド

次の表は,テキストを数値出力に変換するために使用可能な変換指定子の一覧です。sscanfは値を10進数表現(基数10)に変換します。

数値フィルドタプ

変換指定子

説明

整数,符号付き

% d

基数 10。

%我

この値により基数が決定されます。

  • 既定の設定は基数10です。

  • 最初の数字が0 xまたは0 xの場合,値は基数16(16進数)になります。

  • 最初の数字が0の場合,値は基数8(8進数)になります。

% ldまたは%李

64ビットの値,基数10,8,16。

整数,符号なし

% u

基数 10。

%啊

基数 8 (8 進数)。

% x

基数 16 (16 進数)。

陆%%瞧% lx

64ビットの値,基数10,8,16。

浮動小数点数

% f% eまたは% g

浮動小数点値。入力フィールドには、次のどれでも含めることができます (大文字と小文字の区別なし)。。浮動小数点数を表す入力フィ,ルドでは,先頭の+または-記号、eまたはEを使用した指数表現を使用できます。変換指定子% f% eおよび% gはいずれも入力フィ,ルドを同様に処理します。

文字フィ,ルド

次の表は,テキストを変換して出力を文字配列にするために使用可能な変換指定子の一覧です。

文字フィルドタプ

変換指定子

説明

文字ベクトルまたは字符串スカラ

% s

sscanfが空白を検出するまで,テキストを読み取ります。

% c

空白も含め,任意の1文字を読み取ります。
一度に複数の文字を読み取るには,フィ,ルド幅を指定します。たとえば,% 10 cは一度に10文字を読み取ります。

パタ,ンマッチング

%[…]

大かっこ内の文字のみを,不一致文字または空白に達するまで読み込みます。

例:%(亩)“夏天”“夏”として読み取ります。

formatSpecに数値と文字の指定子の組み合わせが含まれる場合,sscanfは各文字をそれに相当する数値に変換します。

オプションの演算子

  • 無視するフィ,ルドと文字

    sscanfは,特定のフィールドまたはフィールドの一部を無視するように指示していない限り,すべての数値および文字を順番に読み取ります。フィ,ルドをスキップするには,パ,セント記号(% gydF4y2Ba)の後にアスタリスク()を挿入します。たとえば,整数をスキップするには、% * dを指定します。

  • フィ,ルド幅

    一度に読み取る桁またはテキスト文字の最大数を指定するには,パ,セント文字の後に数値を挿入します。たとえば,% 10 cは一度に最大10文字(空白を含む)を読み取ります。% 4 fは,一度に最大4桁(小数点を含む)を読み取ります。

  • 無視するリテラルテキスト

    sscanfは変換指定子の直前または直後にある指定テキストを無視します。

    例:水平% u“使”1として読み取ります。

    例:% uStep的2个步骤2として読み取ります。

デ,タ型:字符|字符串

出力配列一个の次元。,正の整数または2要素の行ベクトルとして指定します。

入力sizeAの形式

説明

入力を最後まで読み取ります。
数値デ,タの場合,一个は列ベクトルになります。
テキストデ,タの場合,一个は文字ベクトルになります。

n

最大n個の数値またはスペ,ス区切りの文字フィ,ルドを読み取ります。
数値デ,タの場合,一个は列ベクトルになります。
テキストデ,タの場合,一个は文字ベクトルになります。

(mn)

最大m * n個の数値または文字フィ,ルドを読み取ります。nにはを指定できますが,には指定できません。一个n列で,列順に埋められます。

デ,タ型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

出力引数

すべて折りたたむ

出力デ,タ。列ベクトル,行列または文字配列として返されます。一个のクラスとサ电子邮箱ズは,formatSpecで指定した変換と,sizeAで指定した出力配列のサ@ @ズにより異なります。

  • formatSpecに数値指定子のみが含まれる場合,一个は数値列ベクトルになります。sizeA引数も指定すると,一个は指定したサesc escズの行列になり,必要であれば0でパディングされます。入力の値の数がsizeAより少ない場合,一个のサ@ @ズはsizeAより小さくなります。代わりに,これは入力からスキャンした値を格納するために必要なサ。

    • formatSpecに64ビットの符号付き整数指定子のみが含まれる場合,一个のクラスはint64になります。

    • formatSpecに64ビットの符号なしの整数指定子のみが含まれる場合,一个のクラスはuint64になります。

    • それ以外の場合,一个はクラスです。

  • formatSpec% cまたは% s指定子のみが含まれている場合,一个は文字ベクトルになります。sizeAも指定すると,一个は文字配列になり,必要であれば零文字でパディングされます(零文字は値が0の制御文字です)。入力の文字数がsizeAより少ない場合,一个のサ@ @ズはsizeAより小さくなります。代わりに,これは入力からスキャンした文字を格納するために必要なサ。

  • formatSpecに数値と文字の指定子の組み合わせが含まれる場合,一个はクラスの数値になり,sscanfは各文字をそれに相当する数値に変換します。この変換は,formatSpecがすべての数値フィ,ルドを明示的にスキップする場合(たとえば,formatSpec% * d %年代”の場合)でも発生します。

  • sscanfがすべての入力をformatSpecと一致させられなかった場合,一个は数値または文字配列になります。一个のクラスは,処理が終了する前にsscanfが読み取る値によって異なります。

デ,タ型:|int64|uint64|字符

出力配列に読み取られた要素の数。整数として返されます。

デ,タ型:

エラ,メッセ,ジ。文字ベクトルとして返されます。strsscanfが変換できないデ,タが含まれている場合,errmsgにはエラ,メッセ,ジが含まれます。sscanfがすべてのデ,タを正常に変換した場合,errmsgは空の文字ベクトルになります。

デ,タ型:字符

スキャンした最後の文字の後の位置。整数として返されます。

デ,タ型:

ヒント

  • 関数sscanfおよびfscanfの読み取りに対する書式指定子は,関数sprintfおよびの書き込み用の形式とは異なります。読み取り関数は精度フィ,ルドをサポ,トしません。幅フィ,ルドは,書き込み用には最小値を,読み取り用には最大値を指定します。

R2006aより前に導入