防止用户按backspace键
我正在开发一个程序,它使用防止用户按backspace键,c,backspace,C,Backspace,我正在开发一个程序,它使用malloc和realloc函数在用户键入字符串时实时增加指针缓冲区 问题是,我想防止用户点击Backspace来更正输入。 在使用getche()时,是否可以在C中以某种方式阻止Blackspace键 我的最终程序将有两个输入:一个没有退格(你不能返回),另一个有退格。(您可以更正输入,然后按Enter键) 下面是一个函数的粗略实现,如果将字符本身退格,则返回-1 char read_all_except_backspace() { char ch;
malloc
和realloc
函数在用户键入字符串时实时增加指针缓冲区
问题是,我想防止用户点击Backspace来更正输入。
在使用getche()
时,是否可以在C中以某种方式阻止Blackspace键
我的最终程序将有两个输入:一个没有退格(你不能返回),另一个有退格。(您可以更正输入,然后按Enter键)
下面是一个函数的粗略实现,如果将字符本身退格,则返回-1
char read_all_except_backspace()
{
char ch;
system("stty raw");
ch = getchar();
system("stty cooked");
if(ch == 127)
//value of backspace in my unix implementation is 127,i doubt it :-/
return -1;
else
return ch;
}
如果在windows上,您可以使用getch而不是上述函数。如果读取字符是backspace,则忽略输入。您可以通过将backspace的值打印为整数来查找它
在windows系统上,可以通过以下方式实现上述功能
char ch=0,str[100];
int i=0;
while(ch!=10)//enter pressed
{
ch = getch();
if(ch == 127)
continue;
str[i++]=ch;
}
str[i-1]=0;
新答案:好的,然后我将更新代码以打印字符串的最后一个字符(再次),将光标移动到退格之前的位置(并跳过代码的其余部分)
原始答案:为什么不直接使用
getch()
打印并处理字符-除非是退格 getche()函数自动将读取的字符回显到屏幕上。如果希望backspace“不删除”已输入的字符,则必须重新回显(重新打印)在backspace之前输入的最后一个字符,以便“看起来”backspace键未注册。是,只需检查用户是否按backspace键,如果检测到退格,则只需忽略不增加下标变量的值并使用continue或将代码放入if-else块中,只需跳过退格部分szString='\0'
应该给您一个整数到指针的警告&下一行的malloc
使它变得多余……因为getche()实时打印您键入的内容。我不想使用其他函数。@user2729661只需在循环中打印字符即可。效果是一样的。@GuillermeBernal,很抱歉,对于这个练习,只允许使用getche(),所以我想问是否可以使用它来处理退格。完全正确,但是当使用getche()按backspace时,它实际上并不会删除最后一个字符。
char ch=0,str[100];
int i=0;
while(ch!=10)//enter pressed
{
ch = getch();
if(ch == 127)
continue;
str[i++]=ch;
}
str[i-1]=0;