Estoy intentando algo muy simple; comparar una cadena ingresada por el usuario a “hola” pero strcmp no quiere trabajar. Sé que me falta algo obvio y creo que tiene que ver con la forma en que declaré mi cadena. Toda ayuda es muy apreciada.
#include #include #include int main (void) { char command[4555], compare[] = "hello"; fgets (command, sizeof (command), stdin); printf ("%s\n%s\n", command, compare); if (strcmp (command, compare) == 0) { printf ("The strings are equal"); } else { printf ("The strings are not equal"); } }
fgets
dejará la nueva línea en el búfer y luego terminará en nulo mientras que el comando no tendrá ninguna nueva línea y solo terminará en nulo.
Al usar fgets, agrega un ‘\ n’ antes del ‘\ 0’ en su cadena. Mediante el uso :
if(command[strlen(command)-1]=='\n') command[strlen(command)-1]='\0';
Lo eliminarás y compararás efectivamente tus cadenas.
Bueno, solo para agregar algo, Sí fgets agrega un carácter ‘\ n’ a la cadena de entrada.
Por lo tanto, es mejor usar la función strncmp que también se encuentra en la misma biblioteca.
strncmp (comando, comparar, strlen (comando) -1).
Funciona bien.