Exemplo de stdargs: miniprintf

From Wiki**3

A função abaixo apresenta um exemplo de utilização da funcionalidade de argumentos variáveis.

 #include <stdarg.h>

 void miniprintf(char *fmt, ...) {
   va_list ap;          /* ponteiro */
   char *p;
   int ival;
   double dval;
   va_start(ap, fmt);   /* aponta para o 1º arg anónimo */
   for (p = fmt; *p; p++) {
     if (*p != '%') {    /* imprime os outros caracteres */
       putchar(*p);
       continue;
     }
     switch (*++p) {
     case 'd':          /* argumento inteiro */
       ival = va_arg(ap, int);
       printf("%d", ival);
       break;
     case 'f':          /* argumento real */
       dval = va_arg(ap, double);
       printf("%g", dval);
       break;
     default:
       exit(1);
     }
   }
   va_end(ap);
 }