Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ivan_esp en 28 Septiembre 2014, 18:00 pm



Título: Sobre argv
Publicado por: ivan_esp en 28 Septiembre 2014, 18:00 pm
Hola a todos,estoy empezando a programar con C y bueno ,aunque son ejercicios fáciles estoy teniendo unos problemas a ver si me podéis ayudar.

Resulta que tengo que según los parámetros de llamada al programa mostrar unas opciones es decir:

$./opciones -c
deberá mostrar:
Argumento 1 es Compilar

$./opciones -c -E
deberá mostrar:
Argumento 1 es Compilar
Argumento 2 es Preprocesar

Tengo esto:

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]) {
  4.  
  5.     int i=1;
  6.     char e;
  7.     for(i=1;i<argc;i++){
  8.     e=argv[i][1];
  9.    // printf("%c\n",argv[i][1]);
  10.     if(e=="c")
  11.      printf("Argumento %d es Compilar \n",i);
  12.     if(e=="E")
  13.      printf("Argumento %d es Preprocesar \n",i);
  14.  
  15.  
  16.     }
  17.  
  18.  
  19. }

Pero me da error al compilar:

Código
  1. opciones.c: In function ‘main’:
  2. opciones.c:10:10: warning: comparison between pointer and integer [enabled by default]
  3.      if(e=="c")
  4.          ^
  5. opciones.c:12:10: warning: comparison between pointer and integer [enabled by default]
  6.      if(e=="E")
  7.          ^

¿Alguna idea?

Saludos y Gracias





Título: Re: Sobre argv
Publicado por: CalgaryCorpus en 28 Septiembre 2014, 18:05 pm
Estas comparando un char contra un string. En C son tipos distintos.
Usa comilla simple y compararas caracter contra caracter.


Título: Re: Sobre argv
Publicado por: kaiserr en 28 Septiembre 2014, 18:31 pm
Creo recordar que el parametro lo tendrias que coger asi:
Código
  1. e=argv[i]


Título: Re: Sobre argv
Publicado por: engel lex en 28 Septiembre 2014, 18:37 pm
Creo recordar que el parametro lo tendrias que coger asi:
Código
  1. e=argv[i]

en este caso no, porque el parametro es "-c" o "-E" y el no está leyendo el "-" sino directamente la letra, efectivamente la solucion como la indica CalgaryCorpus debería funcionar correctamente


Título: Re: Sobre argv
Publicado por: kaiserr en 28 Septiembre 2014, 18:48 pm
it's true  :-X creo que tendre que refrescar mis conocimientos de C.


Título: Re: Sobre argv
Publicado por: engel lex en 28 Septiembre 2014, 19:10 pm
it's true  :-X creo que tendre que refrescar mis conocimientos de C.

tu solucion es correcta pero sería para evaluar "-c" y "-E" como strings


Título: Re: Sobre argv
Publicado por: ivan_esp en 28 Septiembre 2014, 20:00 pm
Gracias a todos ya funciona perfectamente :)