ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fprintf

データのファイルへの書き込み

構文

  • fprintf(fileID,formatSpec,A1,...,An)
  • fprintf(formatSpec,A1,...,An)
  • nbytes = fprintf(___)

説明

fprintf(fileID,formatSpec,A1,...,An) は、formatSpec を配列 A1,...An のすべての要素に列順で適用し、テキスト ファイルにデータを書き込みます。関数 fprintf は、関数 fopen の呼び出しで指定されたエンコード スキームを使用します。

fprintf(formatSpec,A1,...,An) は、データに書式を設定し、その結果を画面に表示します。

nbytes = fprintf(___) は、前の構文の入力引数のいずれかを使用して、fprintf が書き込むバイト数を返します。

すべて折りたたむ

次のように複数の数値およびリテラル テキストを画面に出力します。

A1 = [9.9, 9900];
A2 = [8.8,  7.7 ; ...
      8800, 7700];
formatSpec = 'X is %4.2f meters or %8.3f mm\n';
fprintf(formatSpec,A1,A2)
X is 9.90 meters or 9900.000 mm
X is 8.80 meters or 8800.000 mm
X is 7.70 meters or 7700.000 mm

formatSpec 入力の %4.2f は、出力の各行の先頭の値が小数点以下 2 桁を含む、4 桁のフィールド幅の浮動小数点数であることを示します。formatSpec 入力の %8.3f は、出力の各行の 2 番目の値が小数点以下 3 桁を含む、8 桁のフィールド幅の浮動小数点数であることを示します。\n は新しい行を開始する制御文字です。

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

a = [1.02 3.04 5.06];
fprintf('%d\n',round(a));
1
3
5

formatSpec 入力の %d は、ベクトル round(a) の各値を符号付き整数として出力します。\n は、新しい行を開始する制御文字です。

指数関数の短いテーブルを exp.txt という名前のテキスト ファイルに書き込みます。

x = 0:.1:1;
A = [x; exp(x)];

fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\n',A);
fclose(fileID);

fprintf への最初の呼び出しでヘッダー テキスト xexp(x) が表示され、2 番目の呼び出しで変数 A からの値が表示されます。

Microsoft® のメモ帳を使用してファイルを読み取る場合、改行には '\n' の代わりに '\r\n' を使用してください。たとえば、fprintf への呼び出しを以下のように置き換えます。

fprintf(fileID,'%6s %12s\r\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\r\n',A);

MATLAB® のインポート関数、すべての UNIX® アプリケーション、および Microsoft Word とワードパッドは、'\n' を改行用の信号として認識します。

type コマンドでファイルの内容を表示します。

type exp.txt
     x       exp(x)
  0.00   1.00000000
  0.10   1.10517092
  0.20   1.22140276
  0.30   1.34985881
  0.40   1.49182470
  0.50   1.64872127
  0.60   1.82211880
  0.70   2.01375271
  0.80   2.22554093
  0.90   2.45960311
  1.00   2.71828183

ファイルにデータを書き込み、書き込んだバイト数を返します。

ファイルにデータの配列 A を書き込み、fprintf が書き込んだバイト数を取得します。

A = magic(4);

fileID = fopen('myfile.txt','w');
nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A)
nbytes =

    96

関数 fprintf により、ファイルに 96 バイトが書き込まれました。

ファイルを閉じます。

fclose(fileID);

type コマンドでファイルの内容を表示します。

type('myfile.txt')
   16     5     9     4
    2    11     7    14
    3    10     6    15
   13     8    12     1

画面上にハイパーリンク (MathWorks Web サイト) を表示します。

url = 'http://www.mathworks.com';
sitename = 'The MathWorks Web Site';

fprintf('<a href = "%s">%s</a>\n',url,sitename)

formatSpec 入力の %s は、変数 url および sitename の値が文字列として出力されなければならないことを示します。

関連する例

入力引数

すべて折りたたむ

ファイル識別子。次のいずれかとして指定します。

  • 関数 fopen から取得されるファイル識別子。

  • 標準出力の場合は 1 (画面)。

  • 標準エラーの場合は 2

データ型: double

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

書式演算子

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

変換文字

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

値のタイプ変換詳細

整数、符号付き

%d または %i

基数 10

整数、符号なし

%u

基数 10

%o

基数 8 (8 進法)

%x

基数 16 (16 進法)、小文字 af

%X

%x と同じ、大文字 AF

浮動小数点数

%f

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

%e

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

%E

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

%g

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

%G

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

文字

%c

単一の文字

%s

文字ベクトル

オプションの演算子

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

  • 識別子

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

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

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

  • フラグ

    '–'

    左揃え。
    例: %-5.2f

    '+'

    常に値の符号文字 (+ または –) を出力します。
    例: %+5.2f

    ' '

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

    '0'

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

    '#'

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

    • %o%x、または %X の場合は、接頭辞 00x、または 0X を表示します。

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

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

    例: %#5.0f

  • フィールド幅

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

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

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

  • 精度

    %f%e または %E

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

    %g または %G

    有効桁数
    例: '%.4g'pi' 3.142' と出力します

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

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

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

  • サブタイプ

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

    入力値の型

    サブタイプと変換文字

    出力値の型

    浮動小数点数

    %bx または %bX
    %bo
    %bu

    16 進数、8 進数または 10 進数の倍精度値
    例: %bxpi400921fb54442d18 と出力します

    %tx または %tX
    %to
    %tu

    16 進数、8 進数または 10 進数の単精度値
    例: %txpi40490fdb と出力します

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

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

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

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

    特殊文字

    表現

    単一引用符

    ''

    パーセント文字

    %%

    バックスラッシュ

    \\

    アラーム

    \a

    バックスペース

    \b

    フォーム フィード

    \f

    改行

    \n

    キャリッジ リターン

    \r

    水平タブ

    \t

    垂直タブ

    \v

    ASCII コードが 16 進数 N である文字

    \xN

    ASCII コードが 8 進数 N である文字

    \N

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

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

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

    例: '%s' は、pi3.141593e+00 に変換します。

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

    例: '%s' は、[65 66 67]ABC に変換します。

数値配列または文字配列。スカラー、ベクトル、行列または多次元配列として指定されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char

出力引数

すべて折りたたむ

fprintf が書き込むバイト数。スカラーとして返されます。nbytes は、ファイルへの書き込み時、文字エンコードによって決まります。nbytes は、画面へのデータの出力時、画面に表示される文字数です。

詳細

すべて折りたたむ

ヒント

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

参照

[1] Kernighan, B. W., and D. M. Ritchie, The C Programming Language, Second Edition, Prentice-Hall, Inc., 1988.

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

R2006a より前に導入

この情報は役に立ちましたか?