#include<stdio.h>
int main(void)
{
int c;
while((c=getchar())!=EOF)
{
if(c==8) // 8 is ASCII value of backspace
printf("\\b");
}
}
现在我要输入退格键,并希望getchar()函数将退格键的ASCII返回给c(int变量)
注意-我不是在问getch函数,我知道getch命令能够读取退格键,我只想知道getchar是否能够读取退格键,如果可以,怎么办?
如何做,请向我解释我是C编程新手
如果流stdin
是从文件中读取的,则getchar()
它将像处理'\b'
其他常规字符一样处理退格字符(或ASCII中的8),并将其返回给调用方。
从控制台(又名terminal或tty)读取数据时不这样做的原因与控制台本身的配置有关。默认情况下,控制台处于“熟化”模式,以便处理回声,退格和行缓冲,还可以处理诸如“SIGINT
发送给”的信号Ctrl-C以及更多其他细分设置。
C标准没有提供任何更改终端模式的方法,但是POSIX系统具有stty命令,termios系统调用可用于C程序来执行此操作。
将控制台配置为原始模式后,还应将其设置stdin
为非缓冲模式,setvbuf(stdin, NULL, _IONBF, 0)
以便getchar()
在键入时从控制台读取每个字节。
配置控制台是一个复杂的问题,您可能需要先阅读以下内容:http : //www.linusakesson.net/programming/tty/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句