No he mirado el código en detalle, pero, para empezar, en las funciones mostrarArch() y eliminarValor() estás utilizando feof (fin de fichero), pero los ficheros los abres en modo binario. En modo binario no se tiene en cuenta esta marca. En este post tienes la explicación:
http://www.forosdelweb.com/f96/leer-...0/#post3992738
En ficheros binarios eres tú quien tiene que controlar en qué parte del fichero estás posicionado. Si necesitas moverte adelante y atrás del fichero, mírate las funciones ftell, fseek, fgetpos, fsetpos, rewind.