C standard :: tillæg
Formateret input
Bruges af forskellige funktioner til at konvertere data til et intern format fra et for mennesker læsbart format. Således bruges formateret input til input fra tekst. Du giver en format string som værdien for format til funktionen, den angiver hvorledes du forventer data repræsenteret i en input-stream.
Funktioner falder i to kategorier:
byte output (erklæret ved <stdio.h>) er konvertering af sekvenser af typen char til interne data, funktioner er fscanf, scanf, sscanf, vfscanf, vscanf og vsscanf. 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 sekvenser af typen wchar_t til interne data, funktioner er fwscanf, wscanf, swscanf, vfwscanf, vwscanf og vswscanf. 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
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.
Formatspecifier
Skal passe sammen med datatypen.
Tegn | Parm. | Beskrivelse |
---|---|---|
d | int | Decimal heltal med fortegn i et [-]dddd format. |
i | int | Decimal,octal eller hex heltal med fortegn i et [-]dddd format. Hvis tallet starter med et ciffer større end 0 tolkes input som decimal. Hvis tallet starter med et 0 tolkes input som octal. Hvis tallet starter med 0x eller 0X tolkes input som hex. |
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. |
s | char * | Input tegn til char-array fra tekststrengen indtil \0 eller antal tegn givet med field width. |
c | int, char | Input et tegn. |
a, A | double | Decimal tal med fortegn og decimalpunktum vist i hexadecimal notation efter format [-]0Xd.dddp±mm. 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. |
e, E | double | Konverteres fra et eksponentielt noteret decimaltal efter format [-]m.dddddde±xx. 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 fra et decimaltal efter enten f eller e,E formatet. Hvilken afgøres efter hvordan tallet er præsenteret i input. |
n | int * | Gemmer antallen af tegn foran %n i integer pointeren som angivet i parameteren. |
% | Er % som input, angives for at undgå tolkning som formatspecifier. |