getch 和 getchar 在 windows 和 unix下的区别

时间:2021-08-29 04:55:00

注意getch()是从console读取,(非标准函数)
getch()需要的头文件是<conio.h>。
而getchar()是从stdin,,一般是指键盘
windows平台下ENTER键会产生两个转义字符 \r\n,
\r : 回到开头的地方。
\n : 去到下一行开头



因此,getch()读到 \r 时就会返回他的ASCII码13。(后面的被无视了)
奇怪的问题是为什么getchar()会返回10呢?
前面不是说过返回第一个字符吗?
这的确会让人费解。实际上产生这个结果的原因是,
getchar()把输入的 \r\n 转换成了 \n ,
所以返回的是 \n 的ASCII码 10。为什么会这样呢?
因为前面说过getchar()是C语言标准库函数,
而在unix系统中ENTER键只产生 \n 。顺便说一下,
在MAC OS中ENTER键将产生 \r ,同样也会被替换成 \n。
这样,不管在什么平台下,getchar()都会得到相同的结果,
所以说getchar()标准库函数。

getch 和 getchar 在 windows 和 unix下的区别