getch和_getch的区别
时间: 2024-02-09 20:16:08 浏览: 308
`getch` 和 `_getch` 都是 C 语言中用于从控制台读取一个字符的函数,但是它们的实现略有不同。
`getch` 在 Windows 平台下是可用的,它在 `conio.h` 头文件中声明,其函数原型如下:
```
int getch(void);
```
而 `_getch` 是 Visual C++ 中的函数,它在 `conio.h` 头文件中声明,其函数原型如下:
```
int _getch(void);
```
这两个函数的作用是相同的,都是从控制台读取一个字符,但是 `_getch` 的实现比 `getch` 更简单,且更加可靠。在 Visual C++ 中,`getch` 函数实际上是通过调用 `_getch` 函数实现的,因此 `_getch` 是更加推荐使用的函数。
需要注意的是,如果需要在其他平台上运行,则需要使用其他相应的函数替换 `_getch` 函数。
相关问题
getch函数和_getch函数的区别
getch()和_getch()都是C语言中的函数,用于从键盘读取一个字符。它们的区别在于它们来自于不同的库。
getch()函数是C语言标准库<conio.h>中的函数,通常在Windows环境下使用。它不会将读取的字符显示在屏幕上,而是直接返回读取的字符。如果需要将字符显示在屏幕上,需要手动输出字符。
_getch()函数是Microsoft Visual Studio环境下的函数,来自于<conio.h>库,与getch()类似,它也是从键盘读取一个字符,但是它不仅不显示读取的字符,也不将其回显到控制台上。
解释代码char uart_getch_c(void) { while(1) { if(rUTRSTAT1 & 0x1) { f_nSelectUart = UART1; return RdURXH1(); } if(rUTRSTAT0 & 0x1) { f_nSelectUart = UART0; return rURXH0; } } }
这段代码是一个函数,名为"uart_getch_c",作用是从UART串口读取一个字符。
函数内部首先进入一个无限循环,不停地执行下面的操作。
首先判断UART1端口的RTRSTAT寄存器的最低位是否为1,如果是则表示有字符可读。将全局变量"f_nSelectUart"赋值为UART1,表示读取的字符来自UART1端口。然后调用"RdURXH1"函数,该函数的作用是从UART1端口的接收缓冲器中读取一个字符,并将其返回。
如果UART1端口没有可读的字符,则判断UART0端口的RTRSTAT寄存器的最低位是否为1,如果是则表示有字符可读。将全局变量"f_nSelectUart"赋值为UART0,表示读取的字符来自UART0端口。然后直接从UART0端口的接收缓冲器中读取一个字符,并将其返回。
如果两个UART端口都没有可读的字符,则继续执行循环,直到有字符可读为止。
综上所述,这段代码主要是用于从UART串口读取一个字符,会优先从UART1端口读取,如果没有可读的字符,则从UART0端口读取。
阅读全文