getchar と getch は挙動が全く違うし、getch は環境依存だから。
Windows の場合は getch でいいんだが、UNIX系OSの場合は termios (あるいは curses の getch) を使うことになる。