Argumentos C no funciona?
-
20-09-2019 - |
Pregunta
¿Por qué no funciona? Cuando trato de utilizar -l o -s como primer argumento, las sentencias if no toman. Siempre van a la cuenta de otra persona.
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
if (argv[1] == "-l")
{
printf("Yay!\n");
}
else if (argv[1] == "-s")
{
printf("Nay!\n");
}
else
{
printf("%s\n", argv[1]);
}
return 0;
}
Solución
No se puede comparar cadenas utilizando el operador ==
-. strcmp()
uso en lugar
Al comparar cadenas utilizando ==
que está comparando las direcciones de los punteros char *
, no los valores de cadena.
Otros consejos
En cadenas de C son compara por la función strcmp. En lugar de su compara simplemente punteros. Por lo tanto:
if (strcmp(argv[1],"-l") == 0)
{
printf("Yay!\n");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow