Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Pintar x parametros por pantalla

Estas en el tema de Pintar x parametros por pantalla en el foro de C/C++ en Foros del Web. Buenas. Quiero hacer una función que haga un printf de un texto que reciba. PERO, además, en los parámetros, podría tener algún parámetro más, y ...
  #1 (permalink)  
Antiguo 23/02/2011, 07:28
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
Pintar x parametros por pantalla

Buenas. Quiero hacer una función que haga un printf de un texto que reciba.

PERO, además, en los parámetros, podría tener algún parámetro más, y ene se caso además debería imprimir el valor de esos aprámetros.

¿Cómo lo haría si es opcional?


void syslog(char texto[])
{
printf("%s", texto);
}

Por ejemplo, le paso syslog("hola") -> pinta hola.
Pero si le paso syslog ("hola %d %d", valor1, valor2) -> debe pintar hola 4 6

Saludos.
  #2 (permalink)  
Antiguo 23/02/2011, 07:47
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Pintar x parametros por pantalla

Por la declaración que has puesto, sólo acepta un parámetro la función, así que es imposible meter más.
  #3 (permalink)  
Antiguo 23/02/2011, 07:49
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Pintar x parametros por pantalla

Algo así valdría????

syslog("hola %d %d", 2, 3);

void syslog(char *texto[], int argc, char *argv[])
{
int count;

printf("%s ", texto);

if (argc > 1)
{
for (count = 1; count < argc; count++)
{
printf("argv[%d] = %s\n", count, argv[count]);
}
}
}

Debería pintar "Hola 2, 3". Y si pones más número que los pinte!
  #4 (permalink)  
Antiguo 23/02/2011, 08:37
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Pintar x parametros por pantalla

Existen las funciones que aceptan multiples argumentos. Mira este ejemplo:

http://www.cplusplus.com/reference/c...darg/va_start/

Yo lo que hago es usarlo de esta forma:

Código C:
Ver original
  1. void Error(char *format,...)
  2. {
  3.     va_list args;
  4.     va_start (args, format);
  5.     vfprintf (stderr, format, args);
  6.     va_end (args);
  7. }

Lo que si necesitas mandar el string del formato ya hecho a medida para el printf.
  #5 (permalink)  
Antiguo 23/02/2011, 09:03
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Pintar x parametros por pantalla

GRACIAS.

Mira pongo:

Código:
void syslog ( char texto[], int amount, ...)
{
  int i;
  double val;
  printf ("%s", texto);
  
  va_list vl;
  va_start(vl,amount);
  
  for (i=0;i<amount;i++)
  {
      val=va_arg(vl,double);
      printf ("\t%.2f",val);
  }
  va_end(vl);
  
  printf ("\n");
}




int main ()
{
  syslog ("hola", 3,3.14159,2.71828,1.41421);
  
  int g; scanf("%d\n", g);
  return 0;
}

Y pinta Hola 3.14 2.71 1.41

Pero, ¿cómo hago si por ejemplo, le meto syslog("hola %d Adios%d", 2, 3).

Y no kiero ke pinte Hola Adios 2 3. Sino Hola 2 Adios 3.
  #6 (permalink)  
Antiguo 23/02/2011, 09:15
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Pintar x parametros por pantalla

Código C:
Ver original
  1. void syslog(char *format,...)
  2. {
  3.     va_list args;
  4.     va_start (args, format);
  5.     vfprintf (stderr, format, args);
  6.     va_end (args);
  7. }
  8.  
  9. syslog("hola %d Adios%d",2,3);

Como te dije el string de formato lo tenes que adaptar vos

Etiquetas: pantalla, parametros, pintar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:25.