1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
<html>
<head>
<title>EAGLE Help: printf()</title>
</head>
<body bgcolor=white>
<font face=Helvetica,Arial>
<hr>
<i>EAGLE Help</i>
<h1><center>printf()</center></h1>
<hr>
<dl>
<dt>
<b>Function</b>
<dd>
Writes formatted output to a file.
<p>
<dt>
<b>Syntax</b>
<dd>
<tt>int printf(string format[, argument, ...]);</tt>
<p>
<dt>
<b>Returns</b>
<dd>
The <tt>printf</tt> function returns the number of characters written
to the file that has been opened by the most recent <a href=277.htm>output</a>
statement.
<p>
In case of an error, <tt>printf</tt> returns <tt>-1</tt>.
<p>
</dl>
<b>See also</b> <a href=256.htm>sprintf</a>,
<a href=277.htm>output</a>,
<a href=235.htm>fileerror</a>
<p>
<b>Format string</b>
<p>
The format string controls how the arguments will be converted,
formatted and printed. There must be exactly as many arguments
as necessary for the format. The number and type of arguments
will be checked against the format, and any mismatch will lead
to an error message.
<p>
The format string contains two types of objects - <i>plain characters</i>
and <i>format specifiers</i>:
<ul>
<li>Plain characters are simply copied verbatim to the output
<li>Format specifiers fetch arguments from the argument list
and apply formatting to them
</ul>
<b>Format specifiers</b>
<p>
A format specifier has the following form:
<p>
<tt>% [flags] [width] [.prec] type</tt>
<p>
Each format specification begins with the percent character (<tt>%</tt>).
After the <tt>%</tt> comes the following, in this order:
<ul>
<li>an optional sequence of flag characters, <tt>[flags]</tt>
<li>an optional width specifier, <tt>[width]</tt>
<li>an optional precision specifier, <tt>[.prec]</tt>
<li>the conversion type character, <tt>type</tt>
</ul>
<b>Conversion type characters</b>
<p>
<table>
<tr><td valign=top><font face=Helvetica,Arial><tt>d</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>signed</b> decimal <b>int</b></font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>o</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>unsigned</b> octal <b>int</b></font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>u</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>unsigned</b> decimal <b>int</b></font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>x</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>unsigned</b> hexadecimal <b>int</b> (with <b>a</b>, <b>b</b>,...)</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>X</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>unsigned</b> hexadecimal <b>int</b> (with <b>A</b>, <b>B</b>,...)</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>f</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>signed real</b> value of the form <tt>[-]dddd.dddd</tt></font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>e</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>signed real</b> value of the form <tt>[-]d.dddd</tt>e<tt>[±]ddd</tt></font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>E</tt> </font></td><td valign=top><font face=Helvetica,Arial>same as <tt>e</tt>, but with <b>E</b> for exponent</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>g</tt> </font></td><td valign=top><font face=Helvetica,Arial><b>signed real</b> value in either <tt>e</tt> or <tt>f</tt> form, based on given value and precision</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>G</tt> </font></td><td valign=top><font face=Helvetica,Arial>same as <tt>g</tt>, but with <b>E</b> for exponent if <tt>e</tt> format used</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>c</tt> </font></td><td valign=top><font face=Helvetica,Arial>single character</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>s</tt> </font></td><td valign=top><font face=Helvetica,Arial>character string</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>%</tt> </font></td><td valign=top><font face=Helvetica,Arial>the <tt>%</tt> character is printed</font></td></tr>
</table>
<p>
<b>Flag characters</b>
<p>
The following flag characters can appear in any order and combination.
<p>
<table>
<tr><td valign=top><font face=Helvetica,Arial><tt>"-"</tt> </font></td><td valign=top><font face=Helvetica,Arial>the formatted item is left-justified within the field; normally, items are right-justified</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>"+"</tt> </font></td><td valign=top><font face=Helvetica,Arial>a signed, positive item will always start with a plus character (<tt>+</tt>); normally, only negative items begin with a sign</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>" "</tt> </font></td><td valign=top><font face=Helvetica,Arial>a signed, positive item will always start with a space character; if both <tt>"+"</tt> and <tt>" "</tt> are specified, <tt>"+"</tt> overrides <tt>" "</tt></font></td></tr>
</table>
<p>
<b>Width specifiers</b>
<p>
The width specifier sets the minimum field width for an output value.
<p>
Width is specified either directly, through a decimal digit string, or
indirectly, through an asterisk (<tt>*</tt>). If you use an asterisk for the
width specifier, the next argument in the call (which must be an <tt>int</tt>)
specifies the minimum output field width.
<p>
In no case does a nonexistent or small field width cause truncation of
a field. If the result of a conversion is wider than the field width,
the field is simply expanded to contain the conversion result.
<p>
<table>
<tr><td valign=top><font face=Helvetica,Arial><tt><i>n</i></tt> </font></td><td valign=top><font face=Helvetica,Arial>At least <i>n</i> characters are printed. If the output value has less than <i>n</i> characters, the output is padded with blanks (right-padded if <tt>"-"</tt> flag given, left-padded otherwise).</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>0<i>n</i></tt> </font></td><td valign=top><font face=Helvetica,Arial>At least <i>n</i> characters are printed. If the output value has less than <i>n</i> characters, it is filled on the left with zeroes.</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>*</tt> </font></td><td valign=top><font face=Helvetica,Arial>The argument list supplies the width specifier, which must precede the actual argument being formatted.</font></td></tr>
</table>
<p>
<b>Precision specifiers</b>
<p>
A precision specifier always begins with a period (<tt>.</tt>) to
separate it from any preceding width specifier. Then, like width,
precision is specified either directly through a decimal digit string, or
indirectly, through an asterisk (<tt>*</tt>). If you use an asterisk for the
precision specifier, the next argument in the call (which must be an <tt>int</tt>)
specifies the precision.
<p>
<table>
<tr><td valign=top><font face=Helvetica,Arial>none </font></td><td valign=top><font face=Helvetica,Arial>Precision set to default.</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>.0</tt> </font></td><td valign=top><font face=Helvetica,Arial>For <tt>int</tt> types, precision is set to default; for <tt>real</tt> types, no decimal point is printed.</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>.<i>n</i></tt> </font></td><td valign=top><font face=Helvetica,Arial><i>n</i> characters or <i>n</i> decimal places are printed. If the output value has more than <i>n</i> characters the output might be truncated or rounded (depending on the type character).</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>*</tt> </font></td><td valign=top><font face=Helvetica,Arial>The argument list supplies the precision specifier, which must precede the actual argument being formatted.</font></td></tr>
</table>
<p>
<b>Default precision values</b>
<p>
<table>
<tr><td valign=top><font face=Helvetica,Arial><tt>douxX</tt> </font></td><td valign=top><font face=Helvetica,Arial>1</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>eEf</tt> </font></td><td valign=top><font face=Helvetica,Arial>6</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>gG</tt> </font></td><td valign=top><font face=Helvetica,Arial>all significant digits</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>c</tt> </font></td><td valign=top><font face=Helvetica,Arial>no effect</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>s</tt> </font></td><td valign=top><font face=Helvetica,Arial>print entire string</font></td></tr>
</table>
<p>
<b>How precision specification (</b><tt>.n</tt><b>) affects conversion</b>
<p>
<table>
<tr><td valign=top><font face=Helvetica,Arial><tt>douxX</tt> </font></td><td valign=top><font face=Helvetica,Arial><i>.n</i> specifies that at least <i>n</i> characters are printed. If the input argument has less than <i>n</i> digits, the output value is left-padded with zeros. If the input argument has more than <i>n</i> digits, the output value is <b>not</b> truncated.</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>eEf</tt> </font></td><td valign=top><font face=Helvetica,Arial><i>.n</i> specifies that <i>n</i> characters are printed after the decimal point, and the last digit printed is rounded.</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>gG</tt> </font></td><td valign=top><font face=Helvetica,Arial><i>.n</i> specifies that at most <i>n</i> significant digits are printed.</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>c</tt> </font></td><td valign=top><font face=Helvetica,Arial><i>.n</i> has no effect on the output.</font></td></tr>
<tr><td valign=top><font face=Helvetica,Arial><tt>s</tt> </font></td><td valign=top><font face=Helvetica,Arial><i>.n</i> specifies that no more than <i>n</i> characters are printed.</font></td></tr>
</table>
<p>
<b>Binary zero characters</b>
<p>
Unlike <a href=256.htm>sprintf</a>, the <tt>printf</tt> function can print binary zero characters (0x00).
<pre>
char c = 0x00;
printf("%c", c);
</pre>
<p>
<b>Example</b>
<pre>
int i = 42;
real r = 3.14;
char c = 'A';
string s = "Hello";
printf("Integer: %8d\n", i);
printf("Hex: %8X\n", i);
printf("Real: %8f\n", r);
printf("Char: %-8c\n", c);
printf("String: %-8s\n", s);
</pre>
<hr>
<table width=100% cellspacing=0 border=0><tr><td align=left><font face=Helvetica,Arial>
<a href=index.htm>Index</a>
</font></td><td align=right><font face=Helvetica,Arial size=-1>
<i>Copyright © 2005 CadSoft Computer GmbH</i>
</font></td></tr></table>
<hr>
</font>
</body>
</html>
|