函数格式:fprintf(fileID, format, A, ...);fprintf(format, A, ...);count = fprintf(...)
fprintf(fileID, format, A, ...) applies the format to all elements of 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, ...) 格式化数据并将其结果显示在屏幕上。
count = fprintf(...) 返回fprintf写的字节个数。
Input Arguments
fileID |
One of the following:
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 |
\a |
Alarm |
\b |
Backspace |
\f |
Form feed |
\n |
New line |
\r |
Carriage return |
\t |
Horizontal tab |
\v |
Vertical 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 Type |
Conversion |
Details |
Integer, signed |
%d or %i |
Base 10 values |
%ld or %li |
64-bit base 10 values |
%hd or %hi |
16-bit base 10 values |
Integer, unsigned |
%u |
Base 10 |
%o |
Base 8 (octal) |
%x |
Base 16 (hexadecimal), lowercase letters a–f |
%X |
Same as %x, uppercase letters A–F |
%lu %lo %lx or %lX |
64-bit values, base 10, 8, or 16 |
%hu %ho %hx or %hX |
16-bit values, base 10, 8, or 16 |
Floating-point number |
%f |
Fixed-point notation |
%e |
Exponential notation, such as3.141593e+00 |
%E |
Same as %e, but uppercase, such as3.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 ('d', 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' |
.2f |
Modify selected numeric conversions:
-
For %o, %x, or %X, print 0, 0x, or 0X prefix.
-
For %f, %e, or %E, print decimal point even when precision is 0.
-
For %g or %G, do not remove trailing zeros or decimal point.
|
'#' |
%#5.0f |
-
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 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 .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 .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)