elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema la copiar cadena con strcpy
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema la copiar cadena con strcpy  (Leído 5,474 veces)
NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Problema la copiar cadena con strcpy
« en: 16 Enero 2012, 21:27 pm »

Hola, soy nuevo en el foro y se poco de C. Tengo una pequeña duda que me está matando. He probado de un montón de formas y no acierto. Tengo un programa que me pide unos argumentos y al intentar sacarlos con strcpy me devuelve "Violación de segmento". Este es el código:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. main(int argc, char *argv[])
  6. {
  7. char *argumento1;
  8. /*Creo que aquí me da el error con "strcpy(&argumento1, argv[1]);" y con otros...*/
  9. if (argumento1=="--help")
  10. {
  11. printf("En construcción.\n");
  12. }
  13. return 0;
  14. }
  15.  
  16.  
¿Alguien me da la forma de copiar argv[1] en argumento1? Gracias de antemano.


« Última modificación: 16 Enero 2012, 21:29 pm por NeoB » En línea

bdoX

Desconectado Desconectado

Mensajes: 35



Ver Perfil
Re: Problema la copiar cadena con strcpy
« Respuesta #1 en: 16 Enero 2012, 22:37 pm »

Hola: bienvenido al foro. mira, te cuento


Código
  1. /*Creo que aquí me da el error con "strcpy(&argumento1, argv[1]);" y con otros...*/
  2. if (argumento1=="--help")
  3. {
  4. printf("En construcción.\n");
  5. }
  6.  
  7.  
¿Alguien me da la forma de copiar argv[1] en argumento1? Gracias de antemano.

lo que recibe strcpy es una dirección, argumento1 ya es una dirección, asi que no hagas esto "&argumento1". Lo otro, es que argumento1 no tiene memoria reservada, asi que no puedes copiar dentro de esa funcion una cadena determinada.

asi tiene que quedar:

Código
  1. if ( (argumento1  = (char *)malloc (TAM*sizeof (char))) == NULL )
  2. {
  3.    printf ( "Error, no puso asignar memoria\n" );
  4.    return -1;
  5. }
  6.  
  7. strcpy(argumento1, argv[1]);
  8.  

Tampoco puedes comparar cadenas de forma directa

Código:
 if (argumento1=="--help")

tienes que hacerlo con una función que no es para nada dificil de implementar, o simplemente usar la funcion de la string.h llamada strcmp() para hacer comparaciones de cadenas

Yo en particular, compararía la cadena directamente sin necesidad de malgastar memoria, pero supongo que es cosa de gustos.

acá te dejo el codigo:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define TAM 20
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.    char *argumento1;
  10.  
  11.    if ( argc != 2 )
  12.    {
  13.        printf ( "ERROR: debe ingresar un parametro, pida ayuda al comando help\n" );
  14.        printf ( "Ej: c:\\programa.exe --help\n" );
  15.        return -1;
  16.    }
  17.  
  18.    if ( (argumento1  = (char *)malloc (TAM*sizeof (char))) == NULL )
  19.    {
  20.        printf ( "Error, no puso asignar memoria\n" );
  21.        return -1;
  22.    }
  23.  
  24.    //funcion que copia la cadena de argv[1] y lo deja en argumento1
  25.    strcpy (argumento1, argv[1]);
  26.  
  27.    //funcion que compara cadenas
  28.    if ( !strcmp (argumento1,"--help") )
  29.    {
  30.        printf("En construcción.\n");
  31.    }
  32.    return 0;
  33. }
  34.  



En línea

NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: Problema la copiar cadena con strcpy
« Respuesta #2 en: 17 Enero 2012, 17:52 pm »

Ok, muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
copiar caracteres en una cadena « 1 2 3 »
Programación C/C++
mapers 22 22,005 Último mensaje 9 Julio 2010, 05:15 am
por mapers
Problema con funcion strcpy().
Programación C/C++
dark-heimdall 1 4,738 Último mensaje 19 Febrero 2011, 06:36 am
por dark-heimdall
problema con uso de strcpy
Programación C/C++
m@o_614 2 2,570 Último mensaje 19 Diciembre 2011, 18:37 pm
por m@o_614
dudas con strcpy « 1 2 »
Programación C/C++
m@o_614 12 4,945 Último mensaje 16 Marzo 2014, 00:38 am
por leosansan
Función strcpy propia en lenguaje C. (copiar una cadena en otra)
Programación C/C++
NOB2014 5 5,365 Último mensaje 27 Diciembre 2016, 22:07 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines