2015-05-29 14 views
1

Мне нужно, чтобы пользователь остановил цикл, пока он все еще выполняет итерацию/цикл.Итерация до тех пор, пока не будет нажата клавиша C

Я хочу, чтобы моя программа показывала «сек» много раз, пока пользователь не остановит ее.

#include<stdio.h> 
#include<time.h> 
#include<conio.h> 
#include<stdlib.h> 
#define p printf 
#define s scanf 
int main(void) 
{  
    int i,j; 
    time_t seconds; 
    do 
    { 
     i=seconds;  
     seconds=time(NULL); 
     j=seconds; 
     if(i!=j) 
     { 
      p("sec"); 
     } 
    }while(j==j); 
    getchar(); 
    return(0); 
} 

Использование getch или scanf будет останавливать цикл каждый раз. Кто-нибудь может мне помочь? Я думал, что может быть какая-то функция, которая определяет, нажата ли клавиша, но не ждет, чтобы она была нажата, чтобы продолжить цикл. Конечно, j == j - это бесконечный цикл.

OMG я founf решения здесь: c programming check if key pressed without stopping program

Если вы хотите, я не могу опубликовать fisnished программы, его для друга, который хочет улучшить в пушках стрельбы.

+0

Паузы это как, нажав любую клавишу? – Subinoy

+0

Я не думаю, что эта проблема может быть решена без использования потоков. – Subinoy

+0

В окнах вы можете использовать 'kbhit', на * nix системах, которые вам нужно гадать с настройками терминала, чтобы вы могли написать свою собственную функцию' kbhit'. – user3386109

ответ

0

Вы можете сделать это, используя обработчик сигнала для обработки SIGINT. Таким образом, когда пользователь нажимает Ctrl + C, управление передается обработчику сигнала, и вы выбираете, что ему делать.

void handler(int); 
int main(){ 
    signal(SIGINT, handler);// Register the signal handler 
    ... 
} 

void handler(int sig) 
{ 
// Your logic to decide what to do when Ctrl + C is pressed 
} 

Ссылка: [1] - http://www.csl.mtu.edu/cs4411.ck/www/NOTES/signal/install.html

+0

Те, для сигналов не для клавиатуры, только для сигналов. Не так ли? – Subinoy

+0

И используя это, мы можем использовать не только 'ctrl + c', но также' ctrl + \ 'и другие комбинации генерации сигналов. – Subinoy

+0

SIGINT предназначен специально для обработки сигнала, генерируемого при нажатии Ctrl + C. –

Смежные вопросы