Test Foro de elhacker.net SMF 2.1

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:

#include <stdio.h>

int main(int argc, char *argv[]) {
 
     int i=1;
     char e;
     for(i=1;i<argc;i++){
     e=argv[i][1];
    // printf("%c\n",argv[i][1]);
     if(e=="c")
      printf("Argumento %d es Compilar \n",i);
     if(e=="E")
      printf("Argumento %d es Preprocesar \n",i);
     
       
     }
 
     
}


Pero me da error al compilar:

Código (bash) [Seleccionar]
opciones.c: In function 'main':
opciones.c:10:10: warning: comparison between pointer and integer [enabled by default]
      if(e=="c")
          ^
opciones.c:12:10: warning: comparison between pointer and integer [enabled by default]
      if(e=="E")
          ^


¿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:

e=argv[i]
Título: Re: Sobre argv
Publicado por: engel lex en 28 Septiembre 2014, 18:37 PM
Cita de: kaiserr en 28 Septiembre 2014, 18:31 PM
Creo recordar que el parametro lo tendrias que coger asi:

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
Cita de: kaiserr en 28 Septiembre 2014, 18:48 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 :)