Как завершить выполнение программы после нажатия клавиатуры - PullRequest
0 голосов
/ 18 марта 2020

Вот мой код, моя цель на этом этапе - создать анимацию ASCII, завершить ее после ввода любого символа. Я использую getch() для этой стадии, но, похоже, не работает.

#include <stdio.h>
#include <time.h>
#include <curses.h>

int main() {
    int i, j, ms = 250;    
    const char *a = "*";
    struct timespec delay;
    delay.tv_sec = 0;
    delay.tv_nsec = ms * 1000000L;
    while(1) {
        for (i = 0; i < 4; i++) {
            printf("%c", a[i]);
            fflush(stdout);
            nanosleep(&delay, NULL);
            printf("\b");
        }
        if(getch() != -1)break;
        //printf("%c,%d\n",buffer,buffer);
    }
    return 0;
}

1 Ответ

0 голосов
/ 18 марта 2020

Перед использованием любой функции curses необходимо вызвать функцию initsr c, в ручном режиме сказать:

#include <curses.h>

WINDOW *initscr(void);

Описание

Обычно initscr - это первая подпрограмма curses, вызываемая при инициализации программы.

Код initscr определяет тип терминала и инициализирует все проклятия структуры данных. initscr также вызывает обновление первого вызова, чтобы очистить экран. Если возникают ошибки, initscr записывает соответствующее сообщение об ошибке в стандартную ошибку и завершает работу; в противном случае указатель возвращается в stdscr.

...