msprintf
converts, formats, and writes data in a string
sprintf
converts, formats, and writes data in a string
Syntax
str = msprintf(format, a1,...,an)
Arguments
- format
a string providing the format to use to write all next arguments. The
format
follows -- as close as possible -- the C printf format operand syntax, as described in the printf_conversion page. UTF-8 extended characters and numbered placeholders "%n$.." are supported.- a1,...,an
Data to be converted and written according to the
format
argument. Supported types: all numbers, booleans, strings. Only the real part of complex numbers is considered (current Scilab limitation).- str
a string, or a column of strings.
Description
str=msprintf(format, a1, a2, ..)
replaces placeholders provided
inside the format
string with values of a1
,
a2
, .. converted according to each respective placeholder directive,
and set the result to the str
string.
If a1
, a2
, .. are arrays with multiple rows,
they feed the format row by row: the format is used iteratively for every row of the
(horizontally "concatenated") arrays, until the bottom
of the least tall array is reached. Remaining rows of taller arrays (if any) are ignored.
See examples.
If the total number of columns of a1
, a2
, ..
is bigger than the number of placeholders in the format
,
then extra columns are ignored. If it is smaller, an error is yielded.
If either the format includes some Next_line "\n" sequence,
or if all arrays a1 , a2 .. have at least 2 rows,
the result str is a column of strings. See examples. |
Examples
msprintf('%5.3f %5.3f',123,0.732) msprintf('%5.3f\n%5.3f',123,0.732) msprintf('--%s-\n-%d--',"hello",3) msprintf('%e ', [1;2;3]) msprintf('%d %d\n', [1, 2; 3, 4])
I = (1:4)'; A = [26.93 ; 63.25 ; 40.51 ; 91.84]; B = [ 3.62 ; 15.04 ; 25.3 ; 48.19]; C = [ 4.37 28.06 48.18 %inf 41.48 %nan 26.39 77.83]; Status = ["NOK" "NOK" "NOK" "OK"]'; Format = "Iteration %d: Results: A= %f B= %2d%% Status= %3s C(1)= %g C(2)= %e\n"; msprintf(Format, I, A, B, Status, C)
--> msprintf(Format, I, A, B, Status, C) ans = "Iteration 1: Results: A= 26.930000 B= 3% Status= NOK C(1)= 4.37 C(2)= 2.806000e+01" "Iteration 2: Results: A= 63.250000 B= 15% Status= NOK C(1)= 48.18 C(2)= Inf" "Iteration 3: Results: A= 40.510000 B= 25% Status= NOK C(1)= 41.48 C(2)= Nan" "Iteration 4: Results: A= 91.840000 B= 48% Status= OK C(1)= 26.39 C(2)= 7.783000e+01"
Supernumerary columns or rows are ignored:
A = [%T %F %T %T %F]'; B = [ 4.37 28.06 48.18 %inf 41.48 %nan ]; msprintf("OK? %s Value: %4.1f\n", A, B)
--> msprintf("OK? %s Value: %4.1f\n", A, B) ans = "OK? T Value: 4.4" "OK? F Value: 48.2" "OK? T Value: 41.5"
Numbered placeholders "%n$.." allow reordering printed data with the format:
names = ["Peter", "Martha" "John"]'; ages = [32 25 8]'; msprintf("%2$6s is %1$d-year old.\n", ages, names)
--> msprintf("%2$6s is %1$d-year old.\n", ages, names) ans = " Peter is 32-year old." "Martha is 25-year old." " John is 8-year old."
See also
- printf_conversion — mprintf, msprintf, mfprintf C-format specifications
- mprintf — converts, formats, and writes data to the main scilab window
- %chars — Selected sets of Unicode characters
History
Version | Description |
6.1.0 | Numbered placeholders "%n$.." are supported in the format. |
6.1.1 | Input data can be boolean. |
Report an issue | ||
<< mprintf | Output functions | print >> |