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:
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
Estas comparando un char contra un string. En C son tipos distintos.
Usa comilla simple y compararas caracter contra caracter.
Creo recordar que el parametro lo tendrias que coger asi:
e=argv[i]
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
it's true :-X creo que tendre que refrescar mis conocimientos de C.
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
Gracias a todos ya funciona perfectamente :)