Allora, c'è un problema.
Se usi Visual C++, la funzione getch considera le freccie dei tasti "estesi".
Se il tasto è esteso getch() ritorna -32, non il codice della freccia.
Per leggere il codice del tasto esteso, lo leggi richiamando un'altra volta getch().

Es.

codice:
char car = 0;
char car2 = 0;
if ((car = getch()) == -32) {
    // il tasto è esteso, quindi può essere una delle frecce.
    switch (car2 = getch()) {
        /* Controlla se car2 è 77, 72 ecc... */
    }