Revisa tu manual de referencia sobre la funcion getch:
No espera ningun argumento al que asignarle algo sino que retorna el ascii del caracter. De todas formas si no usas conio para otra cosa que para el getch puedes quitarla y usar getchar:
Ademas tienes que vaciar el buffer de entrada estandar despues de cada scanf, getchar y gets (ese ultimo ya lo tienes).
Revisa tambien tu manual de referencia para el fflush, en algunos s.o. no se comporta tal como se espera; como alternativa tienes la opcion de forzar el vaciado del bufer de entrada estandar manualmente:
Suerte con eso
Saludos
vosk