如何允许用户在C中窗口*中间的terminal*中输入文本?

如何允许用户在C中窗口*中间的terminal*中输入文本?,c,terminal,read-eval-print-loop,getchar,C,Terminal,Read Eval Print Loop,Getchar,我在看一些基本的东西,比如: #include <stdio.h> int main(void) { char name[20]; printf("Hello. What's your name?\n"); //scanf("%s", &name); - deprecated fgets(name,20,stdin); printf("Hi there, %s", name); return 0; } 而|就是光标闪烁的

我在看一些基本的东西,比如:

#include <stdio.h>

int main(void) 
{
    char name[20];
    printf("Hello. What's your name?\n");
    //scanf("%s", &name);  - deprecated
    fgets(name,20,stdin);
    printf("Hi there, %s", name);
    return 0;
}
|
就是光标闪烁的地方。当他们按enter键时,它会将他们带到下一行密码行。当他们按enter键时,可能会清除密码,他们必须再次输入密码,等等。然后他们最后按enter键,它会显示“成功”


我不需要确切地知道如何实现这一点,但我想知道总体策略,这样我就可以了解它,因为它涉及很多特性。我主要不确定如何在C中正确定位光标。我知道ansi转义序列以及如何定位光标。我要用C来做这个吗?这方面有什么好的例子我可以参考吗?使用什么技术来实现这一点?

另一个选项是清除然后重新绘制整个屏幕。libslang也有用于屏幕的API;另一种选择是使用外部命令“tput”(速度慢但容易)。最好避免ANSI转义,并使用ncurses。重新设计控制盘没有意义。您可以通过从提示符末尾删除“\n”并在fgets之前强制执行fflush(stdout)来获得“部分”解决方案。
------------------------------------

               Welcome


      Enter email: |
      Enter password:



------------------------------------