Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2011, 21:29
Avatar de Doommarine_Maxi
Doommarine_Maxi
 
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 2 meses
Puntos: 8
Duda con cantidad de parametros indefinidos.

Bueno gente, la verdad estoy practicando un poco y estoy armando una funcion para poder concatenar una cantidad de cadenas indefinida, y estoy usando una funcion con una cantidad de parametros indefinidos.

Aqui el codigo:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdarg.h>
  3. #include <stdlib.h>
  4. using namespace std;
  5.  
  6. void pause()
  7. {
  8.      cout << "Presione Enter para finalizar..." << endl;
  9.      char c;
  10.      do
  11.      {    
  12.           c = getchar();
  13.      } while (c != '\n');
  14. }  
  15.  
  16.  
  17. char* MultiCad(int, ...);
  18. int maxLong(char* cadena)
  19. {      
  20.         int x=0;
  21.         while(cadena[x] != '\0')x++;
  22.         return x;
  23. }
  24. int main()
  25. {
  26.         printf("Cadena : %s\n", MultiCad(4, "Chuck ", "Norris", " es ","Dios"));
  27.         pause();
  28.         return 0;
  29. }
  30.  
  31. char* MultiCad(int max, ...)
  32. {
  33.         va_list p;
  34.         va_start(p, max);
  35.         int ac_size=0;
  36.         char* Cadena = (char*)calloc(sizeof(char), ac_size);
  37.         int ac_x=0;
  38.         for (int x=0; x < max; x++)
  39.         {
  40.                 char* temp = va_arg(p, char*);
  41.                 ac_size += maxLong(temp);
  42.                 Cadena = (char*)realloc(Cadena, (sizeof(char)*ac_size));
  43.                 for (int y=0; y < maxLong(temp); y++)
  44.                         Cadena[ac_x++] = temp[y];
  45.         }
  46.         va_end(p);
  47.         Cadena[ac_size] = '\0';
  48.  
  49.         return Cadena;
  50. }

Lo que me gustaria saber es si hay alguna forma en la que yo no tenga que declarar la cantidad de parametros.