Parece que no puedo hacer que strcmp funcione correctamente

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.