The first argument is an atom representing the text to be output. The text can contain special character sequences which specify formatting and substitution rules.
Supported special character sequences are:
| Sequence | Action |
|---|---|
| \n | Output a 'new line' character (ASCII code 10). |
| \l | Same as \n. |
| \r | Output a 'carriage return' character (ASCII code 13). |
| \t | Output a tab character (ASCII code 9). |
| \\ | Output the \ character. |
| \% | Output the % character. |
| \\uNNNN | Output the unicode character represented by the hex digits NNNN. |
| %t | Output the next term - in same format as write/1. |
| %w | Same as \t. |
| %q | Same as \t. |
| %p | Same as \t. |
| %d | Output the next term - in same format as write_canonical/1. |
| %f | Ignored (only included to support compatibility with other Prologs). |
| %s | Output the elements contained in the list represented by the next term. |
| %n | Output the character code of the next term. |
| %r | Write the next term N times, where N is the value of the second term. |
| %Nc | Write the next term centered in N columns. |
| %Nl | Write the next term left-aligned in N columns. |
| %Nr | Write the next term right-aligned in N columns. |
writef(X) produces the same results as writef(X, []).
Examples
?- writef('%s%n %t%r', [[h,e,l,l,o], 44, world, !, 3]).
hello, world!!!
yes
?- writef('.%7l.\\n.%7l.\\n.%7l.\\n.%7l.\\n.%7l.', [a, abc, abcd, abcdefg, abcdefgh]).
.a .
.abc .
.abcd .
.abcdefg.
.abcdefgh.
yes
?- writef('.%7r.\\n.%7r.\\n.%7r.\\n.%7r.\\n.%7r.', [a, abc, abcd, abcdefg, abcdefgh]).
. a.
. abc.
. abcd.
.abcdefg.
.abcdefgh.
yes
?- writef('.%7c.\\n.%7c.\\n.%7c.\\n.%7c.\\n.%7c.', [a, abc, abcd, abcdefg, abcdefgh]).
. a .
. abc .
. abcd .
.abcdefg.
.abcdefgh.
yes
?- writef('%w %d', [1+1, 1+1]).
1 + 1 +(1, 1)
yes
?- writef('\\%\\%%q\\\\\\\\\\r\\n\\u0048',[abc]).
%%abc\\
H
yesNote: calling writef with only 1 argument is the same as calling it with an empty list for the second argument:
?- writef('\\u0048\\u0065\\u006C\\u006c\\u006F', []).
Hello
yes
?- writef('\\u0048\\u0065\\u006C\\u006c\\u006F').
Hello
yes