scanw、getstr 系列輸入函數完整解析與實戰scanw()在螢幕任意位置讀取格式化字串,類似 scanf 但支援游標定位。
wscanw() / mvwscanw()從指定視窗讀取資料,mvwscanw 可先移動游標再讀取。
getstr() 系列從終端讀取字串,本質等同連續呼叫 getch() 讀取字元,直到遇到換行、CR 或 EOF 才停止,將指標指向讀取的字串。
#include
#include
#include
int main() {
char mess[] = "您的性別:";
char mesg[] = "您的名字:";
char name[80];
char sex[10];
int row, col;
setlocale(LC_ALL, "");
initscr();
getmaxyx(stdscr, row, col); // 取得螢幕尺寸
mvprintw(row/2, col/2 - strlen(mesg), "%s", mesg);
getstr(name); // 讀取名字
mvprintw(row/3, col/2 - strlen(mess), "%s", mess);
getstr(sex); // 讀取性別
char man[] = "man";
if (strcmp(sex, man) == 0)
mvprintw(LINES-2, 0, "%s先生好,很高興認識您", name);
else
mvprintw(LINES-2, 0, "%s女士好,很高興認識您", name);
refresh();
getch();
endwin();
return 0;
}
gcc -lncursesw 1.c -o mytest
./mytest

關鍵提醒:中文環境必須連結 ncursesw 並呼叫 setlocale(LC_ALL, "")。