Я получил эту часть моей программы, которая печатает что-то на экране бесконечно, пока пользователь не нажмет пробел и не введет какое-то значение.Я пытался вызвать echo () прямо перед первым printw, но это не сработало.Может кто-нибудь сказать мне, почему при наборе текста цена не отображается на экране или, по крайней мере, указать мне в нужном месте?Я также первоначально использовал 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;
}