C standard :: tillæg
Formateret output
Bruges af forskellige funktioner til at konvertere data fra et intern format til et for mennesker læsbart format. Således bruges formateret output oftest til udskrifter. Du giver en format string som værdien for format til funktionen, den angiver hvorledes du ønsker data repræsenteret.
Funktioner falder i to kategorier:
byte output (erklæret ved <stdio.h>) er konvertering af data til præsentationer af sekvenser af typen char, funktioner er fprintf, printf, sprintf, vfprintf, vprintf og vsprintf. For disse funktioner er format string en multibyte string som begynder og slutter i initial_shift_state.
wide output (erklæret ved <wchar.h>) konverterer data til præsentationer af sekvenser af typen wchar_t, funktioner er fwprintf, wprintf, swprintf, vfwprintf, vwprintf og vswprintf. For disse funktioner er format string en wide-character string.
Format string
En format string har det samme format uanset om den anvendes til print funktioner eller scan funktioner. Følgende er syntaksen for format string:
format string
Format string er en streng der kan blandes med tekst til og værdier der skal formateres inden i teksten. Formateringen indledes med tegnet % og en formatspecifier som beskrives nedenstående. White space er et udtryk for tegn der ikke er synlige, som mellemrum, tabulator og nylinie. null er den generelle måde at afslutte strenge på i C, kaldes null-terminated string.
Formatspecifier
Efter % bruges nedenstående syntaks til at specificere konverteringen:
formatspecifier
Flag
Efter % kan der bruges 0 eller flere flags:
Tegn | Beskrivelse |
---|---|
- | Resultatet af konverteringen vil blive ventrejusteret, hvis dette flaget er udeladt højrejusteres. |
+ | Resultatet vil altid have et minus eller plus tegn foran. Hvis dette flag udelades vil der kun blive et minustegn hvis resultatet er negativt. |
space | Hvis det første tegn af en konvertering ikke giver et tegn indsættes et mellemrum. |
# | Dette angiver et alternativ form. Med o konvertering bliver der altid et foranstillet nul, med x og X konverteringer indsættes 0x eller (0X) hvis resultatet er ikke-nul. For e, E, f, g og G konverteringerne bliver altid med decimalpunktum selvom er ingen cifre er efter decimalpunktummet. |
0 | Til d, i, n, o, u, x, X, e, E, f, g og G konverteringerne bliver feltbredden justeret med nuller lige efter et evt. fortegn. |
Field width
Hvis output er smallere en feltbredden indsættes mellemrum, hvis intet er angivet i flag indsættes mellemrum til venstre for output, hvorved output højrestilles. Feltbredden kan antage * (beskrives senere) eller et heltal.
Precision
Evt. en precision som er minimum antal cifre for d, i, n, o, u, x og X konverteringer, eller decimaler til a, A, e, E eller f konverteringerne, det maksimale antal cifre for g og G konverteringerne eller det maksimale antal tegn for en streng s konvertering. Precision tager formen med et punktum (.) efterfulgt af * (beskrives senere) eller et heltal. Hvis der ikke angives noget efter punktum antages nul istedet.
*: Som angivet kan man bruge * istedet for et tal til feltbredde eller precision, i sådanne situationer skal der en ekstra parameter på hvor tallet kan hentes.
Formatspecifier
Skal passe sammen med datatypen.
Tegn | Parm. | Beskrivelse |
---|---|---|
d, i | int | Decimal heltal med fortegn i et [-]dddd format. Precision angiver minimum antal cifre, hvis resultatet består af færre cifre vil der fyldes op med foranstillede nuller. |
o | int | Octal tal uden fortegn. |
x, X | int | Hexadecimal tal uden fortegn eller 0x eller 0X foran. Bruger bogstaverne abcdef eller ABCDEF. |
u | int | Decimal heltal uden fortegn. Precision angiver minimum antal cifre, hvis resultatet består af færre cifre vil der fyldes op med foranstillede nuller. |
s | char * | Printer tegn fra tekststrengen indtil \0 eller antal tegn givet med precision. |
c | int, char | Printer et tegn. |
a, A | double | Decimal tal med fortegn og decimalpunktum vist i hexadecimal notation efter format [-]0Xd.dddp±mm. Antallet af cifre efter punktummet er identisk med precision. Første ciffer er enten 0 eller 1, hvis 1 vises i hex bits efter den første bit. Mantissen (mm) viser bitnummeret for mest betydende bit startende fra bit0. |
f, F | double | Decimal tal med fortegn og decimalpunktum efter format [-]ddd.ddd. Antallet af cifre efter decimalpunktummet er identisk med precision. |
e, E | double | Konverteres til et eksponentielt noteret decimaltal efter format [-]m.dddddde±xx. Antallet af cifre d efter decimalpunktummet er identisk med precision men er default 6. Eks. 1e+3=1*103=1000 og 1.0045e+3=1,0045*103=1004,5 og 1e-1=1*10-1=0,1 |
g, G | double | Konverteres til et decimaltal efter enten f eller e,E formatet. Hvilken afgøres efter hvad der passer bedst ind i feltbredden. |
n | int * | Gemmer antallen af tegn foran %n i integer pointeren som angivet i parameteren. |
% | Giver % som output |