Just a reminder here.
For details please refer to page: http://www.delorie.com/gnu/docs/glibc/libc_675.html

void my_printf(const char *format_string, ...) {
     va_list arg_list; // a pointer to locate the begin of parameters
     va_start(arg_list, format_string); // the format_string is the last argument, arg_list points to the begin of parameters
     // ...
     // Set A Loop here to traverse along the arguments
     int a = va_arg(arg_list, int); // For example
     // ...
     va_end(arg_list); // Clean up