string sprintf( string format, ... );
An implementation of sprintf() for LPC, with quite a few extensions Originally implemented by Lynscar (Sean A Reith).
This version supports the following as modifiers:
" " - pad positive integers with a space.
"+" - pad positive integers with a plus sign.
"-" - left adjusted within field size.
Note: sprintf() defaults to right justification, which is unnatural
in the context of a mainly string based language but has been retained for
"compatability".
"|" - centered within field size.
"=" - column mode if width is greater than field size. This is only
meaningful with strings, all other types ignore this. Columns are
auto-magically word wrapped.
"#" - table mode, print a list of '\\n' separated 'words' in a
table within the field size. only meaningful with strings.
a number - specifies the field size, a '*' specifies to use the
corresponding arg as the field size. If n is prepended with a zero, then
the field is padded zeros, otherwise it is padded with spaces (or specified pad string; see below).
"." then a number - precision of n, simple strings truncate after this (if precision is
greater than field size, then field size = precision), tables use
precision to specify the number of columns (if precision not specified
then tables calculate a best fit), all other types ignore this.
":" then a number - n specifies the fs _and_ the precision, if n is prepended by a zero then the field is padded with zeros instead of spaces.
"@" - the argument is an array. the corresponding format_info (minus the "@") is applied to each element of the array.
"'X'" - The char(s) between the single-quotes are used to pad to
field size (defaults to space) (if both a zero (in front of field
size) and a pad string are specified, the one specified second
overrules). NOTE: to include "'" in the pad string, you must
use "\'" (as the backslash has to be escaped past the
interpreter), similarly, to include "\" requires "\\\\".
% - in which case no arguments are interpreted, and a "%" is
inserted, and all modifiers are ignored.
O - the argument is an LPC datatype.
s - the argument is a string.
d, i - the integer arg is printed in decimal.
c - the integer arg is to be printed as a character.
o - the integer arg is printed in octal.
x - the integer arg is printed in hex.
X - the integer arg is printed in hex (with A-F in capitals).
f - floating point number
See also: sscanf
Beek @ZorkMUD, Lima Bean, IdeaExchange, TMI-2, and elsewhere