Primero con gets() lees la línea que te han introducido desde teclado y la analizas de alguna manera para ver si lo introducido es correcto.
Luego, con sscanf (cadena_leida, "formato", &variable) lees la variable que te interesa con cierta seguridad de que la cadena leida tiene un formato más o menos correcto.
Por ejemplo, si pides un numero, con gets lees la cadena introducida por el teclado. Con funciones estilo isdigit() compruebas que lo introducido son numeros y luego ya puedes hacer sscanf (cadena_leida, "%d", &variable_entera)
Espero que sea eso lo que estabas preguntando.
Se bueno.