What I personally missed in libc, is interfacing with *printf* family of functions. FILE is an opaque object, there is no standard API to make a custom FILE. I'd prefer to have a lower level printf API like this:
int xprintf(void (*x)(char, void *), void *param, const char *fmt, ...);
int vxprintf(void (*x)(char, void *), void *param, const char *fmt, va_list ap);
Where x(char, void *param) is a generic putchar-like function that outputs a given character, void *param is a user-specified pointer.
Also, printf specifiers for hex, base64, and json-string-escape formatting would be nice. Or maybe some way of specifying custom format specifier, like '%J' that expects a custom formatting function pointer.