curses 向后移动占前几行

curses move backwards accounting for previous lines

有没有办法在考虑到前几行的同时向后移动光标,即当光标从行首返回时,它会转到上一行的最后一个非空字符?

您可以在 curses(全屏)应用程序中轻松做到这一点(通过使用 winch or win_wch 从虚拟屏幕读取字符),但在 termcap/terminfo 低级应用程序,因为没有直接从终端屏幕读取的便携式方法。

所以没有内置的方法,所以我不得不自己写

void backspace(){

  int x,y;
  getyx(stdscr,y,x);

  if(x == 0) {

    if( y == 0 ) {

      return;
    }

    x = getmaxx(stdscr) - 1;

    move(--y,x);

    char ch = ' ';

    while(ch == ' ' && x != 0){
      move(y,--x);
      ch=inch();
    }

  } else {
    move(y,x-1);

  } 


  delch();
}

请注意,我已经删除了此方法中一些不相关的文件 I/O 相关代码。