For the first idea: Yes, but both of those would have to interpret the format string and determine the character lengths of the arguments which is duplicated work. I'd imagine its a large portion of the work. I'm not convinced its any more efficient than snprintf.
The second idea is neat though... it could return an extra argument which is a pointer to the first part of the format string that wasn't printed
The second idea is neat though... it could return an extra argument which is a pointer to the first part of the format string that wasn't printed