如何在C中检查“退格”字符

我想知道如何检查用户是否键入“退格”字符。

我在我的C程序中使用了getch() function ie "key = getch()" ,我想检查何时按下退格键。 这条线:

  if(key = '\b') { .... 

不起作用。

读取退格键的问题在于大多数终端都是“熟”的,因为退格键等终端驱动程序会处理这些键。 但是,curses函数getch()可以读取退格,因为它没有绑定到终端。

编辑

我刚注意到你的代码使用getch()进行输入。 我运行了一个小测试程序,当你按下退格键时, getch()返回127。 因此尝试:

 if (key == 127 || key == 8) { ... /* Checks for both Delete or Backspace */ 

另请注意,您的示例代码使用赋值运算符=何时应使用相等运算符==

i / o流的类型可能会有所帮助。 标准输入流是一种行缓冲流,在您向其中写入’\ n’字符之前不会刷新。 完全缓冲的流永远不会刷新,直到缓冲区已满。 如果在完整buff流中写入退格键,则可以捕获’\ b’。

参考unix环境优势程序。

你没有说getch()函数来自哪个库(它不是C标准的一部分),但是如果是来自ncurses的那个库,你可以检查KEY_BACKSPACE

试试这个:

 #include  /* printf */ #include  /* isalpha isdigit isspace etc */ #define FALSE 0 #define TRUE 1 /* function declarations */ int char_type(char); main() { char ch; ch = 127; char_type(ch); ch = '\b'; char_type(ch); return 0; } int char_type(char ch) { if ( iscntrl(ch) != FALSE) printf("%c is a control character\n", ch); } 

这是一个完整的程序,但它只测试控制字符。 您可以使用它的原则,您的选择。 刚刚学习!

请参阅: http : //www.tutorialspoint.com/c_standard_library/ctype_h.htm或查找C标准库的ctype.h头文件的函数。

你获得投入是件好事。 谢谢你的信息。 我只是查找退格代码并发现了这个问题。

BTW在任何char之前尝试’\ 0’。 不知道那是做什么但它会在它之后停止所有代码。 这就像回归0; 线?

我相信系统输入驱动程序是行缓冲的。 所以它在标准C中是不可能的。