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 fprintf
Funktion
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 fprintf
beantragen printf
, sprintf
und ähnliche Funktionen.
7.19.6.2 Die fscanf
Funktion
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 fprintf
die folgenden Spezifizierer und entsprechenden Typen werden angegeben:
%f
-> doppelt
%Lf
-> langes Doppel.
und dafür fscanf
ist:
%f
-> schweben
%lf
-> doppelt
%Lf
-> langes Doppel.
"%lf"
nicht weiterkommen, ist dies nicht definiert. In C99- und C11-Bibliotheken ist es dasselbe wie"%f"
.