gpt4 book ai didi

c - 停止退格形式删除某些输出

转载 作者:行者123 更新时间:2023-11-30 16:58:41 27 4
gpt4 key购买 nike

我正在使用getch()从键盘读取输入。但如果用户错误地输入了错误的数字,他们自然会想要更正它。按退格键会使 ch 再次等于 0,并从输出中清除错误输入的数字(这样您就看不到它了)。我使用 ASCII 8 字符作为退格键,因为 getch() 适用于 ASCII 数字。退格键现在可以使用,但它现在可以删除整个输出行,包括“输入整数:”。如何才能使“输入整数:”部分不可删除而不将用户的输入放在换行符上?例如:

int main(void)
{
int ch = 0;

here: printf("Enter an integer:\t");
ch = getch();
if(ch == 8) // 8 is ASCII for a backspace
{
ch = 0;
printf("\b \b");
goto here;
}

// some output

return 0;
}

我不希望“输入整数:”和用户输入的数字出现在输出中的 2 个不同行上。

最佳答案

保留一个计数变量来判断是否应该删除。例如,从 0 开始计数,每次键入实际字符时递增计数,每次成功删除字符时递减计数。当 count 为 0 时,则不允许您删除,并且 count 变量不会发生任何变化。应该是这样的,

int main(void)
{
int ch = 0;
int count = 0;
printf("Enter an integer:\t");
here: ch = getch();
if(ch == 8) // 8 is ASCII for a backspace
{
if(count > 0)
{
ch = 0;
count--;
printf("\b \b");
}
goto here;
}
else
{
printf("%c",ch);
count++;
goto here;
}
//perhaps add an else-if statement here so that
//when the enter key is pressed, you don't execute 'goto here'

// some output

return 0;
}

此外,我将此处的位置更改为ch = getch();,因为您不希望每个退格键都重新打印“输入整数:”

关于c - 停止退格形式删除某些输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com