printf

int printf ( const char * format, ... );

Skriver formatterad data till stdout (console om ej redirected)

Skriver C strängen som parametern format pekar på. Om format innehåller format specifiers (sekvenser som börjar med % ) så kommer argument på slutet stoppas in på respektive plats (by index) och byta ut sess dpecifier.

Parametrar

format

C sträng som innehåller texten som ska skrivas till konsolen (stdout)
Format specifiers är optional, och dessa kan dessutiom innehålla ytterligare information:

En format specifier följer detta mönster:

%[flags][width][.precision][length]specifier

specifier - delen är den mest signifikanta, eftersom det avser datatypen

specifierOutputExample
d or iSigned decimal integer900
uUnsigned decimal integer4511
oUnsigned octal601
xUnsigned hexadecimal integer8fa
XUnsigned hexadecimal integer (uppercase)8FA
fDecimal floating point, lowercase492.65
FDecimal floating point, uppercase492.65
eScientific notation (mantissa/exponent), lowercase4.9265e+2
EScientific notation (mantissa/exponent), uppercase4.9265E+2
gUse the shortest representation: %e or %f492.65
GUse the shortest representation: %E or %F492.65
aHexadecimal floating point, lowercase-0xc.90fep-2
AHexadecimal floating point, uppercase-0XC.90FEP-2
cCharactera
sString of characterssample
pPointer addressb8000000
nNothing printed.The corresponding argument must be a pointer to a signed int. The number of characters written so far is stored in the pointed location.
%A % followed by another % character will write a single % to the stream.%

Format specifiern kan också innehålla delarna: flags, width, .precision och modifiers (i den ordningen)

flagsdescription
-Vänster-justera inom givna fältets bredd. Högerjustering är default
+Sätt ett plus eller minus framför tal () . Default = endast negativa får ett prefix (minus såklart)
(space)Om inget plus eller minus ska skrivas sätt ett dett blanktecken (space) innan
#Används med o, x eller X specifiers the value is preceeded with 0, 0x or 0X respectively for values different than zero.
Used with a, A, e, E, f, F, g or G it forces the written output to contain a decimal point even if no more digits follow. By default, if no digits follow, no decimal point is written.
0Left-pads the number with zeroes (0) instead of spaces when padding is specified (see width sub-specifier).
widthdescription
(number)Minsta antalet tecken som ska skrivas ut. Om antalet tecken är färre än detta nummer så kommer resultatet paddas med blanktecken.OBS: Värder trunkueras dock aldrig
*Bredden specificeras inte i formatsträngen utan som ytterligare ett heltalsvärde som kommer innan värdet som ska formatteras
.precisiondescription
.numberFör integer (heltal) (d, i, o, u, x, X): precision specificerar det minsta antalet tecken som sla skrivas. Om antalet tecken är färre än detta nummer så kommer resultatet paddas (utfyllas) med nollor i början. Värdet trunkeras aldrig även om resultatet är längre. Precision "0" betyder att inget tecken skrivs för värdet 0.
För a, A, e, E, f och F specifiers betyder detta antalet siffror som ska skrivas efter decimalpunkten ( default = 6 decimaler).
För g och G specifiers: maximala antalet signifikanta siffror som ska skrivas.
För s: maximalt antal tecken som ska skrivas. Default = alla tecken till null hittas skrivs ut
*Precisionen specificeras inte i formatsträngen utan som ytterligare ett heltalsvärde som kommer innan värdet som ska formatteras.

The length sub-specifier modifies the length of the data type. This is a chart showing the types used to interpret the corresponding arguments with and without length specifier (if a different type is used, the proper type promotion or conversion is performed, if allowed):

specifiers

lengthd iu o x Xf F e E g G a Acspn
(none)intunsigned intdoubleintchar*void*int*
hhsigned charunsigned charsigned char*
hshort intunsigned shortint short int*
llong intunsigned long intwint_twchar_t*long int*
lllong long intunsigned long long intlong long int*
jintmax_tuintmax_tintmax_t*
zsize_tsize_tsize_t*
tptrdiff_tptrdiff_tptrdiff_t*
Llong double

Returnerar

Om det går bra, returneras totala antalet tecken som skrivits
Om fel returneras ett negativt tal och ferror sätts

Exempel

/* printf example */
#include <stdio.h>

int main()
{
   printf ("Characters: %c %c \n", 'a', 65);
   printf ("Decimals: %d %ld\n", 1977, 650000L);
   printf ("Preceding with blanks: %10d \n", 1977);
   printf ("Preceding with zeros: %010d \n", 1977);
   printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
   printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
   printf ("Width trick: %*d \n", 5, 10);
   printf ("%s \n", "A string");
   return 0;
}

Output

Characters: a A
Decimals: 1977 650000
Preceding with blanks:       1977
Preceding with zeros: 0000001977
Some different radices: 100 64 144 0x64 0144
floats: 3.14 +3e+000 3.141600E+000
Width trick:    10
A string