2012-11-24 2 views
-1

언제든지 아무 키나 눌러 루프를 종료하려고합니다. 아래 코드를 시도했지만 할 수 없습니다. 도움이 필요해. 미리 감사드립니다. C-Free 5.0을 사용하고 있습니다.언제든지 루프를 종료하십시오.

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

int main(void) 
{ 
    int b=0, i; 
    int seconds; 
    printf("\nEnter number of seconds : "); 
    scanf("%d", &seconds); 
    while (b==0) 
    { 
     for(i=1;i<=seconds;i++) 
     { 
      time_t end = time(0) + 1; 
      while(time(0) < end) 
      ; 
      seconds -= 1; 
      printf("Number of seconds left : %d\n", seconds); 
      b=kbhit(); 
     } 

     if(seconds == 0) 
     { 
      exit(0); 
     } 
    } 
    printf("Number of remaining seconds left : %d\n", seconds); 
} 
+1

정확히 "C-Free 5.0"은 무엇입니까? 그게 약간의 C 컴파일러가된다면 gcc (Window에 있다면 mingw)로 바꿀 수있다. – ThiefMaster

+0

가능한 복제본 http://stackoverflow.com/q/6731317/1273830 오, 이미 그 질문을 보았습니까? kbhit? O_O – Prasanth

답변

1

가장 안쪽 루프에서 "통화 대기 중"입니다. 그게 최선의 해결책은 아니 겠지만, 그게 당신이하고 싶은 일이라면, 그 루프에 테스트를 추가하여 키가 눌려 졌는지 확인해야합니다.

+0

굉장 ... !! 나는 그것을 가지고있다. .. 고맙다. –

0

루프를 종료하려면 khbit라는 C++의 함수를 사용하십시오. 어떤 키를 누를 때 1이되고 다시 비워서 getch()를 사용하여 버퍼를 지우는 키를 할당합니다.

#include <conio.h> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    while(1) 
    { 
     if(kbhit()) // khbit will become 1 on key entry. 
     { 
      break; // will break the loop 
     } 

        // Try to use some delay like sleep(100); // sleeps for 10th of second to avoid stress on CPU 
    } 

        // If you want to use khbit again then you must clear it by char dump = getch(); 

        // This way you can also take a decision that which key was pressed like 

        // if(dump == 'A') 

        //{ cout<<"A was pressed e.t.c";} 
} 
관련 문제