无法使用 libcurses 打印包含 space 的句子

Cannot print a sentence including space with libcurses

#include <curses.h>

int main(){
  initscr();
  refresh();
  
  char s[25]; 
  mvprintw(1,0,"Enter sentence: ");
  refresh();
  
  scanw("%s", s); // Input `one two`.
  mvprintw(2,0,"%s\n", s); // This just prints `one`.
  refresh();
  
  getch();
  endwin();
  return 0;
}

输入为one two

输出只是 one,缺少后半部分。

scanw 没有正确处理空格吗?

scan 函数通常在空格处中断,所以

scanw("%s", s);

scanw("%24[^\n]", s); // always do bounds checking

即最多读取24个非换行符。

而且,您应该始终检查提取是否有效:

if(scanw("%24[^\n]", s) == 1) { ... }

如果您混合来自各处的输入,请考虑使用“吃掉”剩菜的“贪婪”版本:

scanw(" %24[^\n]", s)    // note the space at the beginning