Presumably IPV4 (uint32_t)
Yep. Also "%e" for ethernet addresses.
Compared the C++ way, I find printf formats to be a nice compromise in being able to visualize what the output will actually look like, not quite so explicit as fortran FORMAT or COBOL PICTUREs (?), but much better than individual function calls.
This implementation
https://github.com/cesanta/str expands the idea of non-standard specifiers (%I, %e) to one single non-standard specifier %m/%M which requires a "printer" function. This way, you can custom-print anything: internet addresses, ethernet addresses, structures, automatically base64-encode strings, etc etc.