Products & Services Solutions Academia Support User Community Company

Learn more about MATLAB   

fprintf - Write data to text file

Syntax

fprintf(fileID, format, A, ...)
fprintf(format, A, ...)
count = fprintf(...)

Description

fprintf(fileID, format, A, ...) applies the format to array A and any additional array arguments in column order, and writes the data to a text file. fprintf uses the encoding scheme specified in the call to fopen.

fprintf(format, A, ...) formats data and displays the results on the screen.

count = fprintf(...) returns the number of bytes that fprintf writes.

Inputs

fileID

One of the following:

  • An integer file identifier obtained from fopen.

  • 1 for standard output (the screen).

  • 2 for standard error.

Default: 1 (the screen)

format

String in single quotation marks that describes the format of the output fields. Can include combinations of the following:

  • Percent sign followed by a conversion character, such as '%s' for strings.

  • Operators that describe field width, precision, and other options.

  • Literal text to print.

  • Escape characters, including:

    ''

    Single quotation mark

    %%

    Percent character

    \\

    Backslash

    \b

    Backspace

    \f

    Form feed

    \n

    New line

    \r

    Carriage return

    \t

    Horizontal tab

    \xN

    Hexadecimal number, N

    \N

    Octal number, N

Conversion characters and optional operators appear in the following order (includes spaces for clarity):

The following table lists the available conversion characters and subtypes.

Value TypeConversionDetails

Integer, signed

%d or %i

Base 10 values

%ld or %li

64-bit base 10 values

Integer, unsigned

%u

Base 10

%o

Base 8 (octal)

%x

Base 16 (hexadecimal), lowercase letters af

%X

Same as %x, uppercase letters AF

%lu
%lo
%lx or %lX

64-bit values, base 10, 8, or 16

Floating-point number

%f

Fixed-point notation

%e

Exponential notation, such as 3.141593e+00

%E

Same as %e, but uppercase, such as 3.141593E+00

%g

The more compact of %e or %f, with no trailing zeros

%G

The more compact of %E or %f, with no trailing zeros

%bx or %bX
%bo
%bu

Double-precision hexadecimal, octal, or decimal value
Example: %bx prints pi as 400921fb54442d18

%tx or %tX
%to
%tu

Single-precision hexadecimal, octal, or decimal value
Example: %tx prints pi as 40490fdb

Characters

%c

Single character

%s

String of characters

Additional operators include:

  • Field width

    Minimum number of characters to print. Can be a number, or an asterisk (*) to refer to an argument in the input list. For example, the input list ('%12d', intmax) is equivalent to ('%*d', 12, intmax).

  • Precision

    For %f, %e, or %E:

    Number of digits to the right of the decimal point.
    Example: '%6.4f' prints pi as '3.1416'

    For %g or %G

    Number of significant digits.
    Example: '%6.4g' prints pi as ' 3.142'

    Can be a number, or an asterisk (*) to refer to an argument in the input list. For example, the input list ('%6.4f', pi) is equivalent to ('%*.*f', 6, 4, pi).

  • Flags

    Action

    Flag

    Example

    Left-justify.

    '–'

    %-5.2f

    Print sign character (+ or ).

    '+'

    %+5.2f

    Insert a space before the value.

    ' '

    % 5.2f

    Pad with zeros.

    '0'

    %05.2f

  • Identifier

    Order for processing inputs. Use the syntax n$, where n represents the position of the value in the input list.

    For example, '%3$s %2$s %1$s %2$s' prints inputs 'A', 'B', 'C' as follows: C B A B.

The following limitations apply to conversions:

  • Numeric conversions print only the real component of complex numbers.

  • If you apply an integer or string conversion to a numeric value that contains a fraction, MATLAB overrides the specified conversion, and uses %e.

  • If you apply a string conversion (%s) to integer values, MATLAB:

    • Issues a warning.

    • Converts values that correspond to valid character codes to characters. For example, '%s' converts [65 66 67] to ABC.

  • Different platforms display exponential notation (such as %e) with a different number of digits in the exponent.

    Platform

    Example

    Windows

    1.23e+004

    UNIX

    1.23e+04

  • Different platforms display negative zero (-0) differently.

     

    Conversion Character

    Platform

    %e or %E

    %f

    %g or %G

    Windows

    0.000000e+000

    0.000000

    0

    Others

    -0.000000e+00

    -0.000000

    -0

A

Numeric or character array.

Examples

Print multiple values and literal text to the screen:

B = [8.8  7.7 ; ...
     8800 7700];
fprintf('X is %4.2f meters or %8.3f mm\n', 9.9, 9900, B)

MATLAB displays:

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
 

Explicitly convert double-precision values with fractions to integer values, and print to the screen:

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

Write a short table of the exponential function to a text file called exp.txt:

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

% open the file with write permission
fid = fopen('exp.txt', 'w');
fprintf(fid, '%6.2f %12.8f\n', y);
fclose(fid);

% view the contents of the file
type exp.txt

MATLAB import functions, all UNIX applications, and Microsoft Word and WordPad recognize '\n' as a newline indicator. However, if you plan to read the file with Microsoft Notepad, use '\r\n' to move to a new line when writing. For example, replace the previous call to fprintf with the following:

fprintf(fid, '%6.2f %12.8f\r\n', y);
 

On a Windows system, convert PC-style exponential notation (three digits in the exponent) to UNIX-style notation (two digits), and print data to a file:

a = [0.06 0.1 5 300]

% use sprintf to convert the numeric data to text, using %e
a_str = sprintf('%e\t',a);

% use strrep to replace exponent prefix with shorter version
a_str = strrep(a_str,'e+0','e+');
a_str = strrep(a_str,'e-0','e-');

% call fprintf to print the updated text strings
fid = fopen('newfile.txt','w');
fprintf(fid, '%s', a_str);
fclose(fid);

% view the contents of the file
type newfile.txt
 

Display a hyperlink (The MathWorks Web Site) on the screen:

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

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

References

[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.

See Also

disp | fclose | ferror | fopen | fread | fscanf | fwrite | sprintf

How To

  


Recommended Products

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.

 © 1984-2010- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS