La família de funcions printf en el llenguatge de programació C és un conjunt de funcions que prenen una cadena de format com a entrada entre una llista de mida variable d'altres valors i produeixen com a sortida una cadena que es correspon amb l'especificador de format i els valors d'entrada donats. La cadena s'escriu en un llenguatge de plantilla senzill: els caràcters normalment es copien literalment a la sortida de la funció, però els especificadors de format, que comencen amb un caràcter %
, indiquen la ubicació i el mètode per traduir una dada (com ara un número) a caràcters. El disseny s'ha copiat per exposar una funcionalitat similar en altres llenguatges de programació.[1]
"printf" és el nom d'una de les principals funcions de sortida de C, i significa " print f ormatted". Les cadenes de format printf són complementàries de les cadenes de format scanf, que proporcionen entrada amb format (lexing, també conegut com a anàlisi). En ambdós casos, aquests proporcionen una funcionalitat senzilla i un format fix en comparació amb els motors de plantilles més sofisticats i flexibles o els lectors/analitzadors, però són suficients per a molts propòsits.[2]
Molts idiomes que no siguin C copien la sintaxi de la cadena de format printf de prop o exactament en les seves pròpies funcions d'E/S.
Les discrepàncies entre els especificadors de format i el tipus de dades poden provocar bloquejos i altres vulnerabilitats. La cadena de format en si és molt sovint una cadena literal, que permet l'anàlisi estàtica de la trucada de funció. Tanmateix, també pot ser el valor d'una variable, que permet un format dinàmic, però també una vulnerabilitat de seguretat coneguda com a explotació de cadena de format no controlada.[3]