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;
}