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