#include <printf.h> #include <stdio.h> #include <string.h> int d_cb(FILE *stream, const struct printf_info *info, const void *const* args) { int num = (*(int*)(((int**)args)[0])), numw = info->width; char str[10], numn = num|numw, *out = str; num = num < 0 ? *out++ = '-', -num : numn; do { *out++ = '0' + num % 10; num /= 10; } while(num); fwrite(str, out - str, 1, stream); return 0; } void init() { register_printf_function('d', d_cb, 0); } int main() { init(); printf("2+4 = %d, 2+2 = %1d\n", 2+4, 2+2); return 0; }