Difference between revisions of "printf"
m |
m |
||
Line 22: | Line 22: | ||
printf("Total sum is: %d\n", Sum); |
printf("Total sum is: %d\n", Sum); |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
+ | |||
+ | == Parameter specification== |
||
+ | === Type specification === |
||
+ | ===Type field=== |
||
+ | The Type field can be any of: |
||
+ | :{| class="wikitable" |
||
+ | |- |
||
+ | ! Character |
||
+ | ! Description |
||
+ | |- |
||
+ | | <code>%</code> |
||
+ | |Prints a literal <code>%</code> character (this type doesn't accept any flags, width, precision, length fields). |
||
+ | |- |
||
+ | | <code>d</code>, <code>i</code> |
||
+ | |<code>int</code> as a signed [[decimal]] number. <code>%d</code> and <code>%i</code> are synonymous. |
||
+ | |- |
||
+ | | <code>u</code> |
||
+ | | Print decimal <code>unsigned int</code>. |
||
+ | |- |
||
+ | | <code>f</code>, <code>F</code> |
||
+ | |<code>double</code> in normal ([[Fixed-point arithmetic|fixed-point]]) notation. <code>f</code> and <code>F</code> only differs in how the strings for an infinite number or NaN are printed (<code>inf</code>, <code>infinity</code> and <code>nan</code> for <code>f</code>; <code>INF</code>, <code>INFINITY</code> and <code>NAN</code> for <code>F</code>). |
||
+ | |- |
||
+ | | <code>e</code>, <code>E</code> |
||
+ | |<code>double</code> value in standard form ([<code>-</code>]d.ddd <code>e</code>[<code>+</code>/<code>-</code>]ddd). An <code>E</code> conversion uses the letter <code>E</code> (rather than <code>e</code>) to introduce the exponent. The exponent always contains at least two digits; if the value is zero, the exponent is <code>00</code>. In Windows, the exponent contains three digits by default, e.g. <code>1.5e002</code>, but this can be altered by Microsoft-specific <code>_set_output_format</code> function. |
||
+ | |- |
||
+ | | <code>g</code>, <code>G</code> |
||
+ | |<code>double</code> in either normal or exponential notation, whichever is more appropriate for its magnitude. <code>g</code> uses lower-case letters, <code>G</code> uses upper-case letters. This type differs slightly from fixed-point notation in that insignificant zeroes to the right of the decimal point are not included. Also, the decimal point is not included on whole numbers. |
||
+ | |- |
||
+ | | <code>x</code>, <code>X</code> |
||
+ | |<code>unsigned int</code> as a [[hexadecimal]] number. <code>x</code> uses lower-case letters and <code>X</code> uses upper-case. |
||
+ | |- |
||
+ | | <code>s</code> |
||
+ | |[[null-terminated string]]. |
||
+ | |- |
||
+ | | <code>c</code> |
||
+ | |<code>char</code> (character). |
||
+ | |- |
||
+ | | <code>a</code>, <code>A</code> |
||
+ | |<code>double</code> in hexadecimal notation, starting with <code>0x</code> or <code>0X</code>. <code>a</code> uses lower-case letters, <code>A</code> uses upper-case letters.<ref>{{cite web|url=https://www.gnu.org/software/libc/manual/html_node/Table-of-Output-Conversions.html#Table-of-Output-Conversions |title="The GNU C Library Reference Manual", "12.12.3 Table of Output Conversions" |publisher=Gnu.org |date= |accessdate=2014-03-17}}</ref><ref> |
||
+ | [http://www.cplusplus.com/reference/cstdio/printf/ "printf"] |
||
+ | (<code>%a</code> added in C99) |
||
+ | </ref> (C++11 iostreams have a <code>hexfloat</code> that works the same). |
||
+ | |} |
Revision as of 12:21, 6 July 2019
"printf" is a function in the C-standard library that outputs text to standard output. Standard output is typically the terminal or debug console, depending on the system the program is running on. The f stands for formatted, allowing the function to output not just fixed strings, but also text with variable data in it.
Contents
Hello world
The simplest of all C-programs is known as "Hello world" program. It outputs "Hello world", using printf.
#include <stdio.h>
int main(void) {
printf("Hello world!\n");
return 0;
}
Using parameters
Parameters need to be specified in the format string. A parameter definition starts with a % character. A simple example with one numerical parameter looks as below:
printf("Total sum is: %d\n", Sum);
Parameter specification
Type specification
Type field
The Type field can be any of:
Character Description %
Prints a literal %
character (this type doesn't accept any flags, width, precision, length fields).d
,i
int
as a signed decimal number.%d
and%i
are synonymous.u
Print decimal unsigned int
.f
,F
double
in normal (fixed-point) notation.f
andF
only differs in how the strings for an infinite number or NaN are printed (inf
,infinity
andnan
forf
;INF
,INFINITY
andNAN
forF
).e
,E
double
value in standard form ([-
]d.ddde
[+
/-
]ddd). AnE
conversion uses the letterE
(rather thane
) to introduce the exponent. The exponent always contains at least two digits; if the value is zero, the exponent is00
. In Windows, the exponent contains three digits by default, e.g.1.5e002
, but this can be altered by Microsoft-specific_set_output_format
function.g
,G
double
in either normal or exponential notation, whichever is more appropriate for its magnitude.g
uses lower-case letters,G
uses upper-case letters. This type differs slightly from fixed-point notation in that insignificant zeroes to the right of the decimal point are not included. Also, the decimal point is not included on whole numbers.x
,X
unsigned int
as a hexadecimal number.x
uses lower-case letters andX
uses upper-case.s
null-terminated string. c
char
(character).a
,A
double
in hexadecimal notation, starting with0x
or0X
.a
uses lower-case letters,A
uses upper-case letters.[1][2] (C++11 iostreams have ahexfloat
that works the same).
- ↑ Template:cite web
- ↑
"printf"
(
%a
added in C99)