Como creo funciones con argumentos variables al estilo printf ó scanf |
|
Escrito por adrianvaca
|
Martes, 22 de Marzo de 2011 23:12 |
Hay que usar funciones y constantes definidas en la biblioteca stdarg.h, por ejemplo:
double multiSuma(int operandos, ...) {
double resultado = 0.0; va_list pa;
va_start(pa, operandos);
while (operandos--) { resultado += va_arg(pa, double); }
va_end(pa);
return resultado; } |
void pprintf(char *formato, ...) {
char *p; va_list pa;
va_start(pa, formato);
for (p = formato; *p; p++) {
if (*p != '?') { putchar (*p); continue; }
switch (*++p) { case 'd': printf("(%d)", va_arg(pa, int)); break; case 's': printf("(%s)", va_arg(pa, char *)); break; default: putchar(*p); break; } } va_end(pa); } |
Y su uso sería:
int main (void) {
printf("Resultado es %g", multiSuma(3, 0.3, 0.1, 0.2)); pprintf("Probemos a poner parentesis a una ?s y a un ?d", "cadena", 25);
return 0; } |
Puedes leer el siguiente artículo donde se explica todo esto en detalle...
|