主要内容

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

sprintf

データの文字列または文字ベクトルへの書式設定

説明

str= sprintf (formatSpecA1,…,一个は,formatSpecで指定された書式演算子を使用して,配列A1,…,一个のデータを書式設定し,結果のテキストをstrに返します。関数sprintfA1,…,一个の値を列の順序で書式設定します。formatSpecが字符串の場合,出的力strも字符串となります。それ以外の場合,strは文字ベクトルです。

書式設定された複数のテキストを字符串配列または文字ベクトルの细胞配列として返すには,関数组成を使用します。

演算に失敗した場合,strerrmsg) = sprintf (formatSpecA1,…,一个はエラーメッセージを文字ベクトルとして返します。それ以外の場合,errmsgは空です。

str= sprintf (literalTextliteralText内の\ n\ tなどのエスケープ文字シーケンスを変換します。その他すべての文字を変更せずに返します。literalTextに書式演算子(% fなど)が含まれる場合,strはそれ以降のすべての文字を破棄します。

すべて折りたたむ

% e% fおよび% g指定子を使用して,浮動小数点数を書式設定します。

= 1 /每股收益;str_e = sprintf (' % 0.5 e”,)
str_e = ' 4.50360 e + 15 '
str_f = sprintf (' % 0.5 f ',)
str_f = ' 4503599627370496.00000 '
str_g = sprintf (% 0.5克的,)
str_g = ' 4.5036 e + 15 '

リテラルテキストと配列値を組み合わせて,文字ベクトルを作成します。

formatSpec ='数组是%dx%d ';A1 = 2;A2 = 3;str = sprintf (formatSpec A1, A2)
str = '该数组是2x3.'

書式設定されたテキストを字符串として返すには,関数sprintfを呼び出す際にformatSpecを文字ベクトルではなく字符串として指定します。

R2017a以降,二重引用符を使用して字符串を作成できるようになりました。データを変換し,結果を字符串として返します。

formatSpec =当前时间为:%d:%d %s;A1 = 11;A2 = 20;A3 =“点”。;str = sprintf (formatSpec A1, A2, A3)
str = "当前时间是:11:20 a.m. ."

入力字符串を変換します。テキストを含む入力配列は文字ベクトルまたは字符串のいずれかにすることができます。

A1 = 2;A2 = 35;A3 =“点”。;str = sprintf (formatSpec A1, A2, A3)
str = "当前时间是:下午2:35 ."

倍精度値を整数に明示的に変換します。

str = sprintf (' % d '而圆(π))
str = ' 3 '

印刷値の最大幅を指定します。

str = sprintf (“% 025 d”[123456])
str = ' 0000000000000000000123456 '

% 025 d書式指定子の0フラグは,出力で先頭にゼロを付加するよう要求します。

n美元位置識別子を使用して入力値を並べ替えます。

A1 =“X”;A2 =“Y”;A3 =“Z”;formatSpec =%3$s %2$s %1$s;str = sprintf (formatSpec A1, A2, A3)
str = ' Z Y X'
C = {1,2,3;“AA”“BB”“CC”};str = sprintf (' % d % s 'C {:})
str = ' 1 AA 2 BB 3 CC'

構文C {:}は,列順序で,Cの各细胞の内容を含む配列のコンマ区切りリストを作成します。たとえばC {1} = = 1およびC{2} = =“AA”などです。

入力引数

すべて折りたたむ

出力フィールドの書式。書式演算子を使用して指定します。formatSpecには通常のテキストおよび特殊文字を含めることもできます。

formatSpec\ nなどのエスケープ文字を表すリテラルテキストが含まれる場合,sprintfはエスケープ文字を変換します。

formatSpecには,一重引用符で囲まれた文字ベクトルか,R2016b以降では字符串スカラーを指定できます。

書式演算子

書式演算子はパーセント記号% gydF4y2Baで始まり,変換文字で終わります。変換文字は必須です。オプションとして,% gydF4y2Baと変換文字の間に識別子,フラグ,フィールド幅,精度およびサブタイプ演算子を指定できます(ここでは読みやすいようにスペースが表示されていますが,実際には演算子の間にスペースは使用できません)。

変換文字

次の表では,数値データおよび文字データをテキストとして書式設定するための変換文字を説明します。

値のタイプ 変換 詳細

整数,符号付き

% dまたは%我

基数 10

整数,符号なし

% u

基数 10

%啊

基数 8 (8 進法)

% x

基数 16 (16 進法)、小文字一个- - - - - -f

% X

% xと同じ,大文字一个- - - - - -F

浮動小数点数

% f

固定小数点表記(小数点以下の桁数の指定には精度演算子を使用)

% e

3.141593 e + 00などの指数表現(小数点以下の桁数の指定には精度演算子を使用)

% E

% eと同じだが,3.141593 e + 00のように大文字(小数点以下の桁数の指定には精度演算子を使用)

% g

% eまたは% fをコンパクトにしたもので,後続のゼロなし(有効桁数の指定には精度演算子を使用)

% G

% Eまたは% fをコンパクトにしたもので,後続のゼロなし(有効桁数の指定には精度演算子を使用)

文字または文字列

% c

単一の文字

% s

文字ベクトルまたは字符串配列。出力テキストのタイプはformatSpecのタイプと同じです。

オプションの演算子

オプションの識別子,フラグ,フィールド幅,精度およびサブタイプ演算子は,出力テキストの書式をさらに細かく定義します。

  • 識別子

    関数の入力引数の処理順序。構文nを使用します。ここで,nは関数呼び出し内の他の入力引数の位置を表します。

    例:('%3$s %2$s %1$s %2$s','A','B','C')は入力引数“一个”“B”“C”C b a bとして出力します。

    メモ:入力引数が配列の場合,識別子を使用してその入力引数の特定の配列要素を指定することはできません。

  • フラグ

    “- - -”

    左揃えします。
    例:% -5.2度
    例:% -10年代

    “+”

    常に数値の符号文字(+または)を出力します。
    例:% + 5.2 f
    テキストを右揃えします。
    例:% + 10 s

    ' '

    値の前にスペースを1つ挿入します。
    例:% 5.2度

    ' 0 '

    値の前にゼロを入れてフィールド幅をパディングします。
    例:% 05.2度

    '#'

    選択した数値変換を次のように変更します。

    • %啊% x,または% Xの場合は,接頭辞00 x,または0 xを出力します。

    • % f% e,または% Eの場合は,精度が0であっても小数点を出力します。

    • % gまたは% Gの場合は,後続のゼロまたは小数点を削除しないでください。

    例:% # 5.0度

  • フィールド幅

    出力する最小文字数。フィールド幅演算子は、数字、あるいは入力引数を参照するアスタリスク ()にすることができます。

    フィールド幅演算子としてを指定する場合,他の入力引数は出力される幅と値の両方を提供しなければなりません。幅と値は引数のペア,または数値配列内のペアにすることができます。フィールド幅演算子としてを使用すると,さまざまな値をさまざまな幅で出力できます。

    例:入力引数(intmax ' % 12 d ')(' % * d ', 12日intmax)と等価です。

    例:入力引数('%*d',[2 10 5 100])“100”を返します。このとき,10には2つのスペース,One hundred.には5つのスペースが割り当てられます。あるいは,フィールドの幅と値を(' % * d ', 2, 10, 5100)のように複数の引数として指定することもできます。

    フラグで特に指定されていない限り,この関数は値の前にスペースを追加してフィールド幅までパディングします。

  • 精度

    % f% eまたは% E

    小数点以下の桁数
    例:“% .4f”π“3.1416”と出力します

    % gまたは% G

    有効桁数
    例:“% .4g”π“3.142”と出力します。

    精度演算子は,数字,あるいは引数を参照するアスタリスク()にすることができます。

    フィールド精度演算子としてを指定する場合,他の入力引数は出力される精度と値の両方を提供しなければなりません。精度と値は引数のペア,または数値配列内のペアにすることができます。精度演算子としてを使用すると,さまざまな値をさまざまな精度で出力できます。

    フィールド幅と精度演算子として* . *を指定する場合,フィールド幅,精度,値を3成分として指定しなければなりません。

    例:入力引数(' % .4f ',π)(' %。* f ' 4π)と等価です。

    例:入力引数(% 6.4 f,π)(' %。* f ' 6 4π)と等価です。

    例:入力引数(' % *。* f ', 6日4π,9日,6日,exp (1))は,3.1416 - 2.718282的を返します。ここで,9および6实验(1)の出力のフィールド幅と精度です。

    メモ

    浮動小数点値の精度演算子を入力の数値データ型の精度より大きい値に指定すると,入力値の精度が指定の精度にならない場合があります。結果はコンピューターのハードウェアとオペレーティングシステムによって異なります。

  • サブタイプ

    サブタイプ演算子を使用して,浮動小数点値を8進数,10進数または16進数の値として出力できます。サブタイプ演算子は,変換文字の直前に指定します。次の表では,サブタイプを使用できる変換を示します。

    入力値の型

    サブタイプと変換文字

    出力値の型

    浮動小数点数

    % bxまたは% bX
    %博
    % bu

    16進数8進数または10進数の倍精度値
    例:% bxπ400921 fb54442d18と出力します

    % txまたは% tX
    %,
    %你

    16進数8進数または10進数の単精度値
    例:% txπ40490身上と出力します

書式演算子の前後のテキスト

formatSpecでは,パーセント記号% gydF4y2Baの前や,変換文字の後に追加のテキストを含めることができます。次のテキストを追加できます。

  • 出力する通常のテキスト。

  • 通常のテキストとして入力できない特殊文字。次の表では,formatSpecで特殊文字を表す方法を説明します。

    特殊文字

    表現

    一重引用符

    ''

    パーセント文字

    %%

    バックスラッシュ

    \\

    アラーム

    、一个

    バックスペース

    \ b

    フォームフィード

    \ f

    改行

    \ n

    キャリッジリターン

    r \

    水平タブ

    \ t

    垂直タブ

    v \

    Unicode®数値を16進数Nで表現できる文字

    \ xN

    例:sprintf(“\ x5A”)“Z”を返します。

    Unicode数値を8進数Nで表現できる文字

    \ N

    例:sprintf (\ 132 ')“Z”を返します。

書式演算子を使用した変換動作の注意点

  • 数値変換は複素数の実数部のみを出力します。

  • 数値のテキスト変換など,データに適さない変換を指定すると,MATLAB®は指定した変換をオーバーライドし,% eを使用します。

    例:' % s 'は,π3.141593 e + 00に変換します。

  • 整数値にテキスト変換(% cまたは% s)を適用する場合,MATLABは有効な文字コードに対応する値を文字に変換します。

    例:' % s 'は,(65 66 67)美国广播公司に変換します。

数値,文字または字符串配列。

データ型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串

書式演算子なしの入力テキスト。文字ベクトルまたは字符串スカラーとして指定します。sprintfliteralText内のエスケープ文字シーケンスをすべて変換します。

データ型:字符|字符串

出力引数

すべて折りたたむ

書式設定されたテキスト。文字ベクトルまたは字符串スカラーとして返されます。出力の型はformatSpecの型と一致します。

エラーメッセージ。演算に失敗した場合に文字ベクトルとして返されます。それ以外の場合,errmsgは空です。

ヒント

  • 関数sprintfと似ていますが,の場合はファイルに出力したりあるいはコマンドウィンドウに表示したりします。

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

  • 無効な書式演算子または特殊文字を指定すると,sprintfはその無効な演算子または文字までのすべてのテキストを出力し,残りを破棄します。

    例:formatSpec“价值= % z 'の場合,% zは書式演算子ではないため,sprintf“价值= 'を出力します。

    例:formatSpec'字符\x99999 = %s'の場合,\ x99999は有効な特殊文字ではないため,sprintf“性格”を出力します。

参照

[1] Kernighan, B. W., D. M. Ritchie, C程序设计语言,第二版,Prentice-Hall, Inc., 1988。

[2] ANSI specification X3.159-1989:“Programming Language C,”ANSI, 1430 Broadway, New York, NY 10018。

拡張機能

R2006aより前に導入