printf ( format-string -- quot )
Formatted printing

Next:sprintf ( format-string -- quot )


Inputs and outputs
format-stringa string

Word description
Writes the arguments (specified on the stack) formatted according to the format string.

Several format specifications exist for handling arguments of different types, and specifying attributes for the result string, including such things as maximum width, padding, and decimals.

%%Single %
%P.DsString formatstring
%P.DSString format uppercasestring
%P.DuUnparsed formatobject
%cCharacter formatchar
%CCharacter format uppercasechar
%+PdInteger format (base 10)integer
%+PoOctal format (base 8)integer
%+PbBinary format (base 2)integer
%+P.DeScientific notationinteger, float
%+P.DEScientific notationinteger, float
%+P.DfFixed formatinteger, float
%+PxHexadecimal (base 16)integer
%+PXHexadecimal (base 16) uppercaseinteger
%[%?, %]Sequence formatsequence
%[%?: %? %]Assocs formatassocs

A plus sign (+) is used to optionally specify that the number should be formatted with a + preceeding it if positive.

Padding (P) is used to optionally specify the minimum width of the result string, the padding character, and the alignment. By default, the padding character defaults to a space and the alignment defaults to right-aligned. For example:

%5s formats a string padding with spaces up to 5 characters wide.
%03d formats an integer padding with zeros up to 3 characters wide.
%'#10f formats a float padding with # up to 10 characters wide.
%-10d formats an integer to 10 characters wide and left-aligns.

Digits (D) is used to optionally specify the maximum digits in the result string. For example:

%.3s formats a string to truncate at 3 characters (from the left).
%.10f formats a float to pad-tail with zeros up to 10 digits beyond the decimal point.
%.5E formats a float into scientific notation with zeros up to 5 digits beyond the decimal point, but before the exponent.

USING: formatting ; 123 "%05d" printf

USING: formatting ; 0xff "%04X" printf

USING: formatting ; 12 "%b" printf

USING: formatting ; 1.23456789 "%.3f" printf

USING: formatting ; 12 "%'#4d" printf

USING: formatting ; 1234 "%+d" printf

USING: formatting ; { 1 2 3 } "%[%d, %]" printf
{ 1, 2, 3 }

USING: formatting ; H{ { 1 2 } { 3 4 } } "%[%d: %d %]" printf
{ 1:2, 3:4 }

USING: calendar formatting ; 3 years "%u" printf
T{ duration { year 3 } }