bucle a través (char * c, …)

Soy nuevo en C, y necesito recorrer los argumentos de una rutina:

void doSmth(char *c, ...) { //how to print all the elements here? } 

Desde que vengo de Java, esto es bastante nuevo para mí, y no tengo idea de cómo hacerlo en C?

Gracias por adelantado

Porque su statement de función es como:

void doSmth(char *c, ...);

Lo que necesita se llama número variable de funciones de argumento, puede leer de: 9.9. Números variables de argumentos un buen tutorial y ensayo.

Código de ejemplo con función doSmth () sus 4 pasos, lea los comentarios :

 //Step1: Need necessary header file #include  void doSmth( char* c, ...){ va_list ap; // vlist variable int n; // number int i; float f; //print fix numbers of arguments printf(" C: %s", c); //Step2: To initialize `ap` using right-most argument that is `c` va_start(ap, c); //Step3: Now access vlist `ap` elements using va_arg() n = va_arg(ap, int); //first value in my list gives number of ele in list while(n--){ i = va_arg(ap, int); f = (float)va_arg(ap, double); //notice type, and typecast printf("\n %d %f \n", i, f); } //Step4: Now work done, we should reset pointer to NULL va_end(ap); } int main(){ printf("call for 2"); doSmth("C-string", 2, 3, 6.7f, 5, 5.5f); // ^ this is `n` like count in variable list printf("\ncall for 3"); doSmth("CC-string", 3, -12, -12.7f,-14, -14.4f, -67, -0.67f); // ^ this is `n` like count in variable list return 1; } 

corre como

 :~$ ./a.out call for 2 C: C-string 3 6.700000 5 5.500000 call for 3 C: CC-string -12 -12.700000 -14 -14.400000 -67 -0.670000 

En C, la cosa es en realidad es un número fijo de argumentos seguidos por números variables de argumentos