Documentation Center

  • Trial Software
  • Product Updates

sprintf

Format data into string

Syntax

  • str = sprintf(formatSpec,A1,...,An) example
  • [str,errmsg] = sprintf(formatSpec,A1,...,An)

Description

example

str = sprintf(formatSpec,A1,...,An) formats the data in arrays A1,...,An according to formatSpec in column order, and returns the results to string str.

[str,errmsg] = sprintf(formatSpec,A1,...,An) returns an error message string when the operation is unsuccessful. Otherwise, errmsg is empty.

Examples

expand all

Floating-Point Formats

Format a floating-point number using %e, %f, and %g specifiers.

A = 1/eps;
str_e = sprintf('%0.5e',A)
str_f = sprintf('%0.5f',A)
str_g = sprintf('%0.5g',A)
str_e =
4.50360e+15

str_f =
4503599627370496.00000

str_g =
4.5036e+15

Literal Text and Array Inputs

Combine literal text with array values to create a string.

formatSpec = 'The array is %dx%d.';
A1 = 2;
A2 = 3;
str = sprintf(formatSpec,A1,A2)
str =
The array is 2x3.

Integer Format with Floating-Point Inputs

Explicitly convert double-precision values to integers.

str = sprintf('%d',round(pi))
str =
3

Field Width

Specify the minimum width of the printed value.

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

The 0 flag in the %025d format specifier requests leading zeros in the output.

Position Identifier (n$)

Reorder the input values using the n$ position identifier.

A1 = 'X';
A2 = 'Y';
A3 = 'Z';
formatSpec = ' %3$s %2$s %1$s';
str = sprintf(formatSpec,A1,A2,A3)
str =
 Z Y X

Cell Array Inputs

Create a string from values in a cell array.

C = { 1,   2,   3 ;
     'AA','BB','CC'};

str = sprintf(' %d %s',C{:})
str =
 1 AA 2 BB 3 CC

The syntax C{:} creates a comma-separated list of arrays that contain the contents of each cell from C in column order. For example, C{1}==1 and C{2}=='AA'.

Input Arguments

expand all

formatSpec — Format of the output fieldsstring

Format of the output fields, specified as a string.

The string can include a percent sign followed by a conversion character. The following table lists the available conversion characters and subtypes.

Value TypeConversionDetails

Integer, signed

%d or %i

Base 10

Integer, unsigned

%u

Base 10

%o

Base 8 (octal)

%x

Base 16 (hexadecimal), lowercase letters af

%X

Same as %x, uppercase letters AF

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

The string can include optional operators, which appear in the following order (includes spaces for clarity):

Optional operators include:

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

  • Flags

    '–'

    Left-justify. Example: %-5.2f

    '+'

    Print sign character (+) for positive values. Example: %+5.2f

    ' '

    Pad to field width with spaces before the value. Example: % 5.2f

    '0'

    Pad to field width with zeros. Example: %05.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.

    Example: %#5.0f

  • 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).

The string can also include combinations of the following:

  • Literal text to print. To print a single quotation mark, include '' in formatSpec.

  • Control characters, including:

    %%

    Percent character

    \\

    Backslash

    \a

    Alarm

    \b

    Backspace

    \f

    Form feed

    \n

    New line

    \r

    Carriage return

    \t

    Horizontal tab

    \v

    Vertical tab

    \xN

    Character whose ASCII code is the hexadecimal number, N

    \N

    Character whose ASCII code is the octal number, N

The following limitations apply to conversions:

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

  • If you specify a conversion that does not fit the data, such as a string conversion for a numeric value, 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.

A1,...,An — Numeric or character arraysscalar | vector | matrix | multidimensional array

Numeric or character arrays, specified as a scalar, vector, matrix, or multidimensional array.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char

Output Arguments

expand all

str — Formatted textstring

Formatted text, returned as a string.

errmsg — Error messagestring

Error message, returned as a string, when the operation is unsuccessful. Otherwise, errmsg is empty.

More About

expand all

Tips

  • The sprintf function is similar to fprintf, but fprintf prints to a file or to the Command Window.

  • Format specifiers for the reading functions sscanf and fscanf differ from the formats for the writing functions sprintf and fprintf. The reading functions do not support a precision field. The width field specifies a minimum for writing but a maximum for reading.

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

| | | | |

Was this topic helpful?