如何使getchar()函数保持退格

Jay*_*tel 3 c

#include<stdio.h>
int main(void)
{
    int c;
    while((c=getchar())!=EOF)
    {
        if(c==8)       // 8 is ASCII value of backspace
          printf("\\b");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想输入退格并希望getchar()函数将退格的ASCII返回到c(int变量)

注意 - 我不是在询问getch函数我知道getch命令能够读取退格我只想知道getchar是否能够读取退格如果是,如何?

怎么做请解释我,我是C编程的新手

chq*_*lie 5

如果流stdin从文件读取,getchar()'\b'像任何其他常规字符一样处理退格字符(或ASCII中的8)并将其返回给调用者.

从控制台(aka 终端tty)读取时不这样做的原因与控制台本身的配置有关.默认情况下,控制台处于熟化模式,以便处理回声,退格和线路缓冲,以及SIGINT发送的信号Ctrl-C和更多的子设置.

C标准没有提供任何更改终端模式的方法,但POSIX系统具有stty命令和C程序可用的termios系统调用来执行此操作.

原始模式下配置控制台后,也设置stdin为无缓冲模式,setvbuf(stdin, NULL, _IONBF, 0)因此getchar()在键入时从控制台读取每个字节.

配置控制台是一个复杂的问题,您可能需要先阅读此内容:http://www.linusakesson.net/programming/tty/