如何在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中是不可能的。