gpt4 book ai didi

c - 仅删除用户输入,而不是整个屏幕

转载 作者:行者123 更新时间:2023-12-05 03:24:13 25 4
gpt4 key购买 nike

有没有办法只删除用户输入而不是整个程序?这是程序

#include <stdio.h>

int main() {
int a;
printf("text");
scanf("%d", &a);
}

如果我要执行 clrscr() 它会删除所有内容,这不是我想要的。

最佳答案

有两种可能的方法解决您的问题:

  • 您可以尝试阻止用户输入回显到终端。这需要使用系统特定调用更改终端的配置,例如 tcgetattr()tcsetattr() ,这是非常棘手且容易出错的。

  • 您可以在使用 ANSI escape sequences 验证后尝试删除用户输入向上移动光标并终止行尾。这要简单得多,但不是万无一失的,当然,它不会阻止在用户键入敏感数据时私密的眼睛看屏幕。

这是一个例子:

#include <stdio.h>

char *get_string(const char *prompt, char *dest, size_t size) {
printf("\r%s: \033[K", prompt);
if (!fgets(dest, size, stdin)))
return NULL;
// assuming the cursor is on the next line, move it
// to the beginning of the line, then up one line, show the prompt again
// erase the end of the line and skip to the next line
printf("\r\033[A%s: \033[K\n", prompt);
return dest;
}

关于c - 仅删除用户输入,而不是整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72330377/

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