2013-02-23 2 views
1

시스템 ("일시 중지")을 사용하면 "계속하려면 아무 키나 누르십시오 ..."라는 메시지가 화면에 나타납니다.시스템 ("일시 중지") 설명

이것은 자극적이며 출력을 읽기가 번거롭 게 만듭니다.

오는 것을 막을 수있는 방법이 있습니까?

+0

'std :: cin.get()'을 대신 사용하십시오. – Rapptz

답변

5

계속 하시려면 아무 키나 누르시고 "계속하려면 아무 키나 누르십시오"라고 표시하지 않으시겠습니까? 이 getchar();을 시도하면 키보드에서 한 글자를 입력하고 계속 진행합니다.

+0

+1이 답변은 간단하고 아주 좋습니다. 광산 울부 짖는 소리는 "설명"을 돕는 것입니다. 여기에 제안 된대로'getchar()'을 사용하십시오. –

3

Windows를 사용 중이라고 가정하면 system("pause")system("pause > NULL")으로 바꿉니다.

+0

감사합니다. 좋은 점은 프로그램의 출력을 Windows의 null 장치에도 전달할 수 있다는 것입니다. :) – Wookie88

0

해당 줄은 system("pause")의 일부입니다. getline(std::cin, variable) 또는 cin.get()과 같은 다른 방법을 시도해 볼 수 있습니다.

5

오히려 플랫폼에 의존 system("pause")을 사용하는 것보다 당신은 std::cin.get() 독립적 인 플랫폼을 사용할 수 있으며 버퍼가 덤비는 경우, 당신은 사용할 수 있습니다

std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n') 

을 손 전에 버퍼를 지 웁니다.

+0

cin.get() 버퍼없이 콘솔에서 직접 charachter 읽을 수 있습니까? – IcyFlame

0

우선 system("pause")을 사용하는 것은 위험하므로 먼저해야합니다. 귀하의 코드는 아무 이유없이 외부 시스템 절차를 호출합니다; 크래커는 "일시 중지"명령을 다른 프로그램으로 대체하여 프로그램이 사용자 권한으로 다른 프로그램을 호출하도록 할 수 있습니다.

즉, null 기기로 메시지를 보내지 않도록 할 수 있습니다.

Windows에서
  • :

    일시 정지> NUL

그리고이 끔찍한 시스템 호출 이식을 할 대담하려는 경우, 당신은 사용할 수 있습니다

  • 리눅스에서 :

    echo pres 계속하기위한 어떤 열쇠 ...; 이제 X

당신이 모두에 또는 (논리 접속사)를 적용 할 수 있습니다 읽고 두 시스템에서 모두 작동하는 시스템 호출합니다

void pause(void) 
{ 
    system("echo Press any key to continue . . . && (read x 2> nul; rm nul || pause > nul)"); 
    return; 
} 

리눅스 임시을 만들 것 이 키워드를 인식하지 못하기 때문에 "nul"파일을 발견했습니다. 리눅스의 널 장치는 /dev/null이며, 단지 nul이 아닙니다. 그 후에 명령은이 임시 파일을 rm nul으로 제거합니다. 따라서 동일한 디렉토리에 nul이라는 파일이있는 경우이 명령이 (다른 이유로) 좋지 않다는 경고를받습니다.

이 명령은 원본을 모방합니다.메시지를 피하려면 그냥 echo Pres... 부분 만 제거하면됩니다.


보너스 :

  • 클리어 system를 사용하여 이식 단말기 화면? (.. 아니, 같은 이유로 그것의 위험을이 작업을 수행하지 않습니다)하지만 테스트 목적을 위해, 당신은 사용할 수 있습니다 :

system("cls||clear");


pause을 피하십시오. C는 가장 강력한 언어 중 하나 인 언어입니다. 예를 들어 getchar() 또는 scanf() 만 사용하여 pause을 만드는 방법이 있다고 확신합니다.

0

사용

system("pause>nul") 

그것은 창문 완벽하게 작동합니다!

+0

안녕하세요 Aayush. 당신은이 질문에 아주 늦게 대답하고 있습니다. 당신은 당신의 대답이 이미 제공된 것보다 낫다는 것을 독자에게 말할 수 있습니까? –