Seguramente ese error aparezca solo al introducir caracteres alfabéticos (letras).
Esto sucede porque lo estás intentando guardar como un entero.
Si quieres aceptar cualquier entrada de caracteres tendrás que usar fgets() y recoger la entrada como una cadena de caracteres y luego ya manejarlo a tu manera: convirtiendo la clave en cadena o convirtiendo la entrada en número (comprobando claro que son caracteres numéricos).
Otro tema aparte es el uso de fflush(stdin) para limpiar el buffer de entrada. Esta función fue diseñada para limpiar el buffer de salida fflush(stdout) y no está hecha para el de entrada. Para limpiar el buffer de entrada utiliza otras opciones como:
Puedes aprovechar el código anterior para limpiar el buffer en caso de introducir caracteres. También se corregirá tu problema sin tener que usar fgets().
Suerte.