The function to register a new output conversion is
register_printf_function
, declared in printf.h.
This function defines the conversion specifier character spec. Thus, if spec is
'Y'
, it defines the conversion ‘%Y’. You can redefine the built-in conversions like ‘%s’, but flag characters like ‘#’ and type modifiers like ‘l’ can never be used as conversions; callingregister_printf_function
for those characters has no effect. It is advisable not to use lowercase letters, since the ISO C standard warns that additional lowercase letters may be standardized in future editions of the standard.The handler-function is the function called by
printf
and friends when this conversion appears in a template string. See Defining the Output Handler, for information about how to define a function to pass as this argument. If you specify a null pointer, any existing handler function for spec is removed.The arginfo-function is the function called by
parse_printf_format
when this conversion appears in a template string. See Parsing a Template String, for information about this.Attention: In the GNU C library versions before 2.0 the arginfo-function function did not need to be installed unless the user used the
parse_printf_format
function. This has changed. Now a call to any of theprintf
functions will call this function when this format specifier appears in the format string.The return value is
0
on success, and-1
on failure (which occurs if spec is out of range).You can redefine the standard output conversions, but this is probably not a good idea because of the potential for confusion. Library routines written by other people could break if you do this.