C programmering for nybegyndere
printf - stdio.h
Formateret output er en familie af funktioner der alle har det fælles at de omsætter parametre med forskellige datatyper til tekst.
formatet for output styres med format i ovenstående syntaks, printf og vprintf skriver ud til stdout medens andre har alternative måder at aflevere teksten.
Formatet eller konverteringen af udskriften styres med en streng hvor der indsættes i teksten en formatspecifier, der er en sammensætning af tegn og tal der indledes med et %-tegn. Efter tegnet % kommer følgende sekvens:
- Nul eller flere flag, i vilkårlig orden, som modificerer konverteringen.
- Evt. en feltbredde. 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.
- Evt. en precision som er minimum antal cifre for d, i, o, u, x og X konverteringer, eller decimaler til 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.
- Evt. h, l (som i el) eller L. h angiver at d, i, o, u, x og X konverteringer specificerer at parameteren er short int eller unsigned short int . l (som i el) efterfulgt af d, i, o, u, x og X konvertering angiver at parameteren er long int eller unsigned long int. L efterfulgt af e, E, f, g og G konverteringerne angiver at parameteren er long double.
- Et bogstav der angiver konverteringen.
* 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.
Flag tegnene har følgende betydning:
- | 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. |
mellemrum | 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, o, u, x, X, e, E, f, g og G konverteringerne bliver feltbredden justeret med nuller lige efter et evt. fortegn. |
Konverteringsspecifier:
d, i | int parameter. Konverteres til et [-]dddd format. Precision angiver minimum antal cifre, hvis resultatet består af færre cifre vil der fyldes op med foranstillede nuller. |
o, u, x, X | unsigned int parameter. Konverteres til Octal (o), Decimal (u), til hexadecimal (x eller X) til et dddd format. Ved x konvertering bruges bogstaverne abcdef, ved X bruges ABCDEF. Precision angiver minimum antal cifre, hvis resultatet består af færre cifre vil der fyldes op med foranstillede nuller. |
f | double parameteren konverteres til et decimaltal efter format [-]ddd.ddd. Antallet af cifre efter decimalpunktummet er identisk med precision. |
e, E | double parameteren konverteres til et decimaltal efter format [-]d.dd±ddd. Antallet af cifre efter decimalpunktummet er identisk med precision. |
g, G | double parameteren konverteres til et decimaltal efter enten f eller e formatet. Hvilken afgøres efter hvad der passer bedst ind i feltbredden. |