Biorąc pod uwagę standard C99 (mianowicie szkic N1256 ), reguły zależą od rodzaju funkcji: fprintf (printf, sprintf, ...) lub scanf.
Oto wyodrębnione części:
Przedmowa
To drugie wydanie anuluje i zastępuje pierwsze wydanie, ISO / IEC 9899: 1990, zmienione i poprawione przez ISO / IEC 9899 / COR1: 1994, ISO / IEC 9899 / AMD1: 1995 i ISO / IEC 9899 / COR2: 1996. Główne zmiany w stosunku do poprzedniej edycji to:
%lf
specyfikator konwersji dozwolony w printf
7.19.6.1 fprintf
Funkcja
7 Modyfikatory długości i ich znaczenie to:
l (ell) Określa, że (...) nie ma wpływu na następujący specyfikator konwersji a, A, e, E, f, F, g lub G.
L Określa, że następujący długi specyfikator konwersji a, A, E, E, f, F, g lub G ma zastosowanie do długiego podwójnego argumentu.
Te same zasady określone dla fprintf
ubiegać printf
, sprintf
a podobne funkcje.
7.19.6.2 fscanf
Funkcja
11 Modyfikatory długości i ich znaczenie to:
l (ell) Określa, że (...) następujące argumenty konwersji a, A, e, E, f, F, g lub G mają zastosowanie do argumentu ze wskaźnikiem typu, który należy podwoić;
L Określa, że następujący argument specyfikujący konwersję a, A, E, E, f, F, g lub G ma zastosowanie do argumentu ze wskaźnikiem typu na długim podwójnym.
12 Specyfikatorami konwersji i ich znaczeniami są: a, e, f, g Dopasowuje opcjonalnie podpisaną liczbę zmiennoprzecinkową, (...)
14 Specyfikatory konwersji A, E, F, G i X są również ważne i zachowują się tak samo, jak odpowiednio a, e, f, g i x.
Krótko mówiąc, fprintf
określono następujące specyfikatory i odpowiadające im typy:
%f
-> podwójne
%Lf
-> długi podwójny.
a do fscanf
tego jest:
%f
-> pływak
%lf
-> podwójne
%Lf
-> długi podwójny.
"%lf"
jest niezdefiniowany; w bibliotekach C99 i C11 jest zdefiniowany jako taki sam jak"%f"
.