Dado el estándar C99 (es decir, el borrador N1256 ), las reglas dependen del tipo de función: fprintf (printf, sprintf, ...) o scanf.
Aquí se extraen las partes relevantes:
Prefacio
Esta segunda edición cancela y reemplaza la primera edición, ISO / IEC 9899: 1990, según enmendada y corregida por ISO / IEC 9899 / COR1: 1994, ISO / IEC 9899 / AMD1: 1995 e ISO / IEC 9899 / COR2: 1996. Los principales cambios de la edición anterior incluyen:
%lf
especificador de conversión permitido en printf
7.19.6.1 La fprintf
función
7 Los modificadores de longitud y sus significados son:
l (ell) Especifica que (...) no tiene efecto en un siguiente especificador de conversión a, A, e, E, f, F, g o G.
L Especifica que el siguiente especificador de conversión a, A, e, E, f, F, g o G se aplica a un argumento doble largo.
Las mismas reglas especificadas para fprintf
solicitar printf
, sprintf
y funciones similares.
7.19.6.2 La fscanf
función
11 Los modificadores de longitud y sus significados son:
l (ell) Especifica que (...) que el siguiente especificador de conversión a, A, e, E, f, F, g o G se aplica a un argumento con puntero de tipo a doble;
L Especifica que el siguiente especificador de conversión a, A, e, E, f, F, g o G se aplica a un argumento con puntero de tipo a doble largo.
12 Los especificadores de conversión y sus significados son: a, e, f, g Coincide con un número de punto flotante opcionalmente firmado, (...)
14 Los especificadores de conversión A, E, F, G y X también son válidos y se comportan igual que, respectivamente, a, e, f, gy x.
La larga historia corta, para fprintf
los siguientes especificadores y tipos correspondientes se especifican:
%f
-> doble
%Lf
-> largo doble.
y por fscanf
eso es:
%f
-> flotador
%lf
-> doble
%Lf
-> largo doble.
"%lf"
no está definido; en las bibliotecas C99 y C11 se define como igual que"%f"
.