This doesn't really do much, but it's a start, anyway:
Code:int sprint(char buffer[], const char * first, ...) { const char * fmt = first; char * b = buffer; char ch; va_list vap; va_start(vap, first); while(*fmt) { ch = *fmt++; if(ch == '%') { ch = *fmt++; if(ch == 's') { char * vs = va_arg(vap, char*); while(*vs) { *b++ = *vs++; } } else // ...not recognized... { --fmt; } } else // ... just copy... { *b++ = ch; } } *b = 0; va_end(vap); return b - buffer; }