In Anbetracht des C99- Standards (nämlich des N1256- Entwurfs) hängen die Regeln von der Funktionsart ab: fprintf (printf, sprintf, ...) oder scanf.
Hier werden relevante Teile extrahiert:
Vorwort
Diese zweite Ausgabe storniert und ersetzt die erste Ausgabe, ISO / IEC 9899: 1990, geändert und korrigiert durch ISO / IEC 9899 / COR1: 1994, ISO / IEC 9899 / AMD1: 1995 und ISO / IEC 9899 / COR2: 1996. Wichtige Änderungen gegenüber der vorherigen Ausgabe sind:
%lf Konvertierungsspezifizierer erlaubt in printf
7.19.6.1 Die fprintfFunktion
7 Die Längenmodifikatoren und ihre Bedeutung sind:
l (ell) Gibt an, dass (...) keine Auswirkung auf einen folgenden a-, A-, e-, E-, f-, F-, g- oder G-Konvertierungsspezifizierer hat.
L Gibt an, dass ein Konvertierungsspezifizierer für a, A, e, E, f, F, g oder G für ein langes Doppelargument gilt.
Die gleichen Regeln festgelegt für fprintfbeantragen printf, sprintfund ähnliche Funktionen.
7.19.6.2 Die fscanfFunktion
11 Die Längenmodifikatoren und ihre Bedeutung sind:
l (ell) Gibt an, dass (...) ein nachfolgender Konvertierungsspezifizierer a, A, e, E, f, F, g oder G für ein Argument mit dem Typzeiger auf double gilt;
L Gibt an, dass ein Konvertierungsspezifizierer für a, A, e, E, f, F, g oder G für ein Argument mit dem Typzeiger auf long double gilt.
12 Die Konvertierungsspezifizierer und ihre Bedeutung sind: a, e, f, g Entspricht einer optional signierten Gleitkommazahl, (...)
14 Die Umrechnungsspezifizierer A, E, F, G und X sind ebenfalls gültig und verhalten sich wie a, e, f, g und x.
Kurz gesagt, für fprintfdie folgenden Spezifizierer und entsprechenden Typen werden angegeben:
%f -> doppelt
%Lf -> langes Doppel.
und dafür fscanfist:
%f -> schweben
%lf -> doppelt
%Lf -> langes Doppel.
"%lf"nicht weiterkommen, ist dies nicht definiert. In C99- und C11-Bibliotheken ist es dasselbe wie"%f".