Se hai implementato la fflush per pulire lo stdin (come si vede dal tuo codice) e sai che su Linux tale funzione non funziona , sappi che ci sono delle tecnice conosciute per pulire il buffer.
Se i problemi potrebbero essere altri (ma lo dubito), usa gdb.