Sobre argv

Iniciado por ivan_esp, 28 Septiembre 2014, 18:00 PM

0 Miembros y 2 Visitantes están viendo este tema.

ivan_esp

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




CalgaryCorpus

Estas comparando un char contra un string. En C son tipos distintos.
Usa comilla simple y compararas caracter contra caracter.
Aqui mi perfil en LinkedIn, invitame un cafe aqui

kaiserr

Creo recordar que el parametro lo tendrias que coger asi:

e=argv[i]

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

kaiserr

it's true  :-X creo que tendre que refrescar mis conocimientos de C.

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivan_esp

Gracias a todos ya funciona perfectamente :)