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

meter palabra que paso como parametro en una variable

Estas en el tema de meter palabra que paso como parametro en una variable en el foro de C/C++ en Foros del Web. tengo un programa al que invoco pasandole una cadena (./programa hola) lo que quiero es que ese "hola" se copie en una variable que tengo ...
  #1 (permalink)  
Antiguo 17/01/2009, 04:17
 
Fecha de Ingreso: enero-2007
Mensajes: 78
Antigüedad: 17 años, 2 meses
Puntos: 2
meter palabra que paso como parametro en una variable

tengo un programa al que invoco pasandole una cadena (./programa hola)
lo que quiero es que ese "hola" se copie en una variable que tengo yo definida de hasta 200 caracteres, tal que asi;

char* cadena;

si utilizo memcpy necesitaria saber a priori el tamaño de esa cadena, y no es el caso (puedo pasar "hola", "esto es una prueba") o lo que sea (de hasta 200 caracteres)

alguien puede ayudarme?

gracias.
  #2 (permalink)  
Antiguo 17/01/2009, 06:49
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: meter palabra que paso como parametro en una variable

En argv tenes los parametros (argc te la cantidad) siendo entonces algo asi en el main:

Código:
int main(int argc, char **argv)
{
  if (argc > 1) //el primer parametro es el nombre del ejecutable normalmente
  {
    size_t parlen = strlen(argv[1]);
    if (parlen >= SIZE_CADENA)
    {
      memset(cadena, 0, SIZE_CADENA); //la llenamos de ceros
      memcpy(cadena, argv[1], SIZE_CADENA - 1); //copiamos todo menos el ultimo caracter asi es una cadena terminada correctamente en 0
    }
    else
    {
      strcpy(cadena, argv[1]); //podemos hacer una copia normal
    }
  }
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
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 07:36.