ドキュメンテーション

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

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 サイト) を表示します。

site = 'http://www.mathworks.com';
title = 'The MathWorks Web Site';

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

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

入力引数

すべて展開する

fileID — ファイル識別子1 (既定値) | 2 | スカラー

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

  • 関数 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 をコンパクトにしたもの

%bx または %bX
%bo
%bu

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

%tx または %tX
%to
%tu

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

文字

%c

単一の文字

%s

文字列

文字列には、次の順序で表示されるオプションの演算子を含めることができます (分かりやすくするためにスペースを挿入しています)。

オプションの演算子には以下のものがあります。

  • 識別子

    入力を処理する順序。構文 n$ を使用します。n は入力リストの値の位置を表します。

    たとえば、'%3$s %2$s %1$s %2$s' は入力 'A''B''C' を次のように出力します。 C B A B.

  • フラグ

    '–'

    左寄せ。例: %-5.2f

    '+'

    正の値の記号文字 (+) を出力します。例: %+5.2f

    ' '

    値の前にスペースを入れてフィールド幅をパディングします。例: % 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 の場合:

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

    %g または %G

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

    数字、または入力リスト内の引数を参照するアスタリスク (*)。たとえば、入力リスト ('%6.4f', pi)('%*.*f', 6, 4, pi) と同じです。

また、文字列には次の組み合わせを含めることができます。

  • 出力するリテラル テキスト。単一引用符を出力するには、formatSpec'' を含めます。

  • 以下の制御文字があります。

    %%

    パーセント文字

    \\

    バックスラッシュ

    \a

    アラーム

    \b

    バックスペース

    \f

    フォーム フィード

    \n

    改行

    \r

    キャリッジ リターン

    \t

    水平タブ

    \v

    垂直タブ

    \xN

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

    \N

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

変換には以下の制限があります。

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

  • 数値の文字列変換など、データを近似しない変換を指定すると、MATLAB は指定した変換を上書きし、%e を使用します。

  • 整数値に文字列変換 (%s) を適用する場合、MATLAB は有効な文字コードに対応する値を文字に変換します。たとえば、'%s' は、[65 66 67]ABC に変換します。

A1,...,An — 数値配列または文字配列スカラー | ベクトル | 行列 | 多次元配列

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

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

出力引数

すべて展開する

nbytes — バイト数スカラー

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.

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