[Magari non interessa a nessuno]

Era come al solito una stupidata (degna di un programmatore stupido xD):

codice:
if (isdigit(ch))
    {
        char ch2 = 0;
        cin.get(ch2);

        //Moves the cursor
        MoveCursor(ch, ch2);
    }
se sul terminale mi scrivono ^12, ad esempio, viene letto il codice ascii di 1 e di 2, e non 1 e 2 stessi. Quindi il programma cerca di muovere il cursore a 48 e a 49, non 1 e 2. La correzione è:

codice:
MoveCursor( (ch - 48), (ch2 - 48) );
Mettiamo che serva a qualcuno :P