我一直试图弄清楚如何防止在用户输入时出现不需要的输入。我的代码有点奇怪,因为当用户按退格键时,字符仍应在屏幕上删除时。
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
int main(void)
{
char ch;
while(1){
ch=getch();
if(isalpha(ch)){
putchar(ch);
}
else if(ch=='\b'){
putchar('\b');
}
else if(ch=='\n'||ch==EOF)
break;
}
return 0;
}
答案 0 :(得分:1)
试试这个
else if(ch=='\b'){
putchar('\b');
putchar(' ');
putchar('\b');
}
答案 1 :(得分:1)
将所有内容保存在缓冲区中......
int main()
{
char c;
char input[2] = "X";
char line[1000] = "";
for (;;) {
input[0] = c = getchar();
if (isalpha(c)) {
strcat(line, input); // Not safe for production
putchar('\f'); // Go back to the start of line
fputs(line, stdout); // Print the line and NO newline
}
else if (c == '\n' || c == EOF) {
puts(""); // newline
break;
}
}
printf("You entered >%s<\n", line);
}
答案 2 :(得分:0)
这里有一个如何处理多字符键的示例:
while (_kbhit())
{
int key = _getch(); // Get key
if (key == 0 || key == 224)
{
key = 256 + _getch(); // Handle multi-char keys
}
//handle imputs:
if (key == 256+75) ... // BTN_LEFT
else if (key == 256+77) ... // BTN_RIGHT
else if (key == 256+72) ... // BTN_UP
else if (key == 256+80) ... // BTN_DOWN
else if (key == 27) ... // BTN_ESC
else if (key == 'B') ...
}
我不知道如何在屏幕上删除单个字符,但您可以清除该行并重写字符而不使用最后一行