我的程序的这一部分会无限期地在屏幕上打印一些内容,直到用户点击空格键并输入一些值。我尝试在第一个 printw 之前调用 echo() 但它不起作用。谁能告诉我为什么打字时价格没有显示在屏幕上或至少指向正确的地方?我最初也使用过 scanw,但它不会中断循环,并且已经检索了一些随机值的价格。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <ncurses.h>
int kbhit(void){
int ch = getch();
if (ch != ERR) {
ungetch(ch);
return 1;
} else {
return 0;
}
}
int main()
{
initscr();
cbreak();
echo();
nodelay(stdscr, TRUE);
scrollok(stdscr, TRUE);
int price;
while(1){
printw("sleeping...\n");
refresh();
if (kbhit()) {
char c = getch();
switch (c){
case 32:
printw("\nPrice in USD? ");
refresh();
scanf("%d", &price);
printw("\nPrice entered: %d\n",price);
refresh();
break;
}
}
sleep(1);
}
return 0;
}
最佳答案
它不起作用,因为scanf
从标准输入读取,该输入被置于原始模式由ncurses(实际上是任何curses库)提供。您可能的意思是 scanw
,它使用 ncurses 库读取输入。
关于c - ncurse 窗口中的 printw 加 scanf 将不会显示键入的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50014137/