Si nos enfocamos solo en el menú las operaciones a realizar son:
1) Leer un entero de la entrada estándar, para ello basta con scanf.
2) Descartar el resto de la linea, necesario ya que si scanf no puede realizar una conversión los caracteres se mantienen en el bufer de la entrada estándar.
3) Discriminar el numero mediante una sentencia de selección.
Un programa de ejemplo, lo mas sencillo posible es:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int opcion;
int ch;
int ok;
do {
/* 1) Tratamos de leer un numero */
ok = 1;
if (scanf("%d", &opcion
) != 1){ puts("Entrada no valida!"); ok = 0;
}
/* 2) Descartamos el resto de la linea */
while ((ch
= getchar()) != EOF
&& ch
!= '\n') ;
/* 3) Si es un numero se selecciona la operacion */
if (ok)
switch (opcion){
case 1:
puts("La opcion seleccionada es la A"); break;
case 2:
puts("La opcion seleccionada es la B"); break;
case 3:
puts("La opcion seleccionada es la C"); break;
case 10:
puts("La opcion seleccionada es terminar"); break;
default:
puts("Numero fuera del rango valido!"); break;
}
}while (opcion != 10);
return EXIT_SUCCESS;
}
Por cierto utilizar scanf y similares tiene sus limitaciones, Si se necesita una validación a prueba de fallos se debe recurrir a las funciones strtol, strtoul o strtod.
Un saludo