Problema de igualdad de cadenas de prueba

No he progtwigdo en C en un tiempo, así que seguramente me estoy perdiendo algo aquí, pero no puedo entender qué es.

Tengo dos cuerdas, como se muestra a continuación:

char toMatch[] = "--exit--"; char entry[1024]; 

A través de este progtwig, tengo un bucle while que acepta la entrada del usuario para modificar la entry cadena en todo el progtwig. Me gustaría salir de este bucle while cuando la entry es igual a toMatch .

Pensé que esto era fácil de hacer con la función strcmp , pero no funciona por alguna razón. Originalmente tuve esto:

 while(strcmp(entry, toMatch) != 0) { // accept user input here to modify entry } 

Sin embargo, esto no funcionó. Así que agregué una línea de código para borrar el contenido de la entry antes de volver a aceptar la entrada del usuario:

 while(strcmp(entry, toMatch) != 0) { memset(entry, 0, sizeof(entry)); // accept user input here to modify entry } 

Esto tampoco funciona. Necesito que la entry sea ​​tan larga, porque la entrada del usuario puede ser de cualquier longitud menor que esta. No tengo idea de por qué strcmp() no funciona, así que creo que me estoy perdiendo algo que debería ser obvio.

Usar strcmp() es bastante fácil si siempre escribe la comparación explícitamente con cero:

  • strcmp(a, b) == 0 para la igualdad
  • strcmp(a, b) != 0 para desigualdad
  • strcmp(a, b) >= 0 para a ordenación igual o posterior a b
  • strcmp(a, b) > 0 para a ordenación después de b
  • strcmp(a, b) <= 0 para a clasificación igual o anterior a b
  • strcmp(a, b) < 0 para a ordenación anterior a b

Si tiene problemas para hacer coincidir "--exit--" con su entrada, ¿ "--exit--" espacios en blanco "--exit--" , los espacios en blanco finales y la nueva línea (especialmente esta última si leyó la entrada con fgets() ). ¿Qué muestra esto?

 printf("[[%s]]\n", entry); 

Los corchetes le muestran dónde piensa el progtwig que están los extremos de la cadena.