Se hai una cifra-carattere in un char la puoi trasformare in un numero con una sottrazione più un cast. Un char di fatto è un tipo numerico, e i caratteri delle cifre sono sequenziali (fatto garantito dallo standard); puoi quindi fare:
codice:char unCarattere; /* ... */ int cifra = (int) unCarattere-'0';