c中的getch和getchar有什么区别吗?

c中的getch和getchar有什么区别吗?一直很混淆,搞不清楚.网上说的和时间的出来的相反。

getch直接得到的是缓冲区的键盘码,getchar是一个宏,从流中读取字符。这个流可以被重定向到文件、管道,不一定是键盘输入。

以下是ubuntu系统man手册的中的说明
getc() is equivalent to fgetc() except that it may be implemented as a macro which evaluates stream more than once.
getchar() is equivalent to getc(stdin).