使用左键箭头向左移动,而不是使用fgets输入字符

当我尝试使用fgets( line,MAX,stdin)读取字符串时,无法使用箭头向后移动并进行更正;会插入诸如^ [[D]之类的字符。是否有fgets的有效替代方法。

这是我用来读取输入的周期:

char *buf = line;
char line[MAX];
printf("Enter x to quit\n>>");

for(;;) {

    if(fgets(buf = line,stdin) == NULL || *buf == 'x')
        break;

}

*buf = '^[[D '可以将光标向左移动,就像退格键一样,但是不会擦除以前的字符吗?

我想要的解决方案不是依靠bash readline这样的外部库,而是纯粹的C ANSI。

SODOU619157158 回答:使用左键箭头向左移动,而不是使用fgets输入字符

fgets函数从输入流中接收一个字符串。按键和输入流之间的关系完全取决于您的操作系统。

如果操作系统提供的功能不适合您,则可以使用控制台输入库,例如ncurses

本文链接:https://www.f2er.com/3160852.html

大家都在问