C에서 "계속하려면 아무 키나 누르기" 기능
C에서 "계속하려면 아무 키나 누르기" 기능을 수행할 공백 기능을 어떻게 만들 수 있습니까?
제가 하고 싶은 일은 다음과 같습니다.
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
//The Void Function Here
//Then I will call the function that will start the game
저는 Visual Studio 2012로 컴파일하고 있습니다.
C 표준 라이브러리 기능 사용getchar()
대신에getch()
는 MS-DOS/Windows 전용으로 Borland TURBO C에서 제공하는 표준 기능이 아닙니다.
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getchar();
여기서,getchar()
당신이 리턴 키를 눌러주기를 기대합니다.printf
진술은 다음과 같아야 합니다.press ENTER to continue
다른 키를 눌러도 Enter 키를 눌러야 합니다.
printf("Let the Battle Begin!\n");
printf("Press ENTER key to Continue\n");
getchar();
Windows(윈도우)를 사용하는 경우getch()
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();
//if you press any character it will continue ,
//but this is not a standard c function.
char ch;
printf("Let the Battle Begin!\n");
printf("Press ENTER key to Continue\n");
//here also if you press any other key will wait till pressing ENTER
scanf("%c",&ch); //works as getchar() but here extra variable is required.
어떤 시스템을 사용하고 있는지는 말하지 않지만 이미 Windows에서 작동하거나 작동하지 않을 수 있는 몇 가지 답변이 있으므로 POSIX 시스템에 대해 답변하겠습니다.
POSIX에서 키보드 입력은 터미널 인터페이스라고 불리는 것을 통해 이루어지며 기본적으로 백스페이스를 적절하게 처리하기 위해 Return/Enter를 누를 때까지 입력 라인을 버퍼링합니다.tcsettract 호출을 사용하여 이를 변경할 수 있습니다.
#include <termios.h>
struct termios info;
tcgetattr(0, &info); /* get current terminal attirbutes; 0 is the file descriptor for stdin */
info.c_lflag &= ~ICANON; /* disable canonical mode */
info.c_cc[VMIN] = 1; /* wait until at least one keystroke available */
info.c_cc[VTIME] = 0; /* no timeout */
tcsetattr(0, TCSANOW, &info); /* set immediately */
이제 당신이 stdin(with)에서 읽을 때.getchar()
또는 다른 방법으로), 반환/입력을 기다리지 않고 문자를 즉시 반환합니다.또한 백스페이스는 더 이상 '작동'하지 않습니다. 마지막 문자를 지우는 대신 입력에서 실제 백스페이스 문자를 읽게 됩니다.
또한 프로그램이 종료되기 전에 표준 모드를 복원해야 합니다. 그렇지 않으면 표준 모드가 아닌 처리로 인해 셸 또는 프로그램을 실행한 사용자에게 이상한 영향이 발생할 수 있습니다.
사용하다getch()
:
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();
Windows 대신 _getch()를 사용해야 합니다.
Windows(윈도우)를 사용하는 경우 다음이 전체 예입니다.
#include <conio.h>
#include <ctype.h>
int main( void )
{
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
_getch();
}
추신: @Rörd는 만약 당신이 POSIX 시스템에 있다면, 당신은 저주 라이브러리가 올바르게 설정되어 있는지 확인해야 한다고 지적했습니다.
사용해 보십시오.
printf("Let the Battle Begin!\n");
printf("Press Any Key to Continue\n");
getch();
getch()
콘솔에서 문자를 가져오는 데 사용되지만 화면에 반향되지 않습니다.
리눅스를 사용하지 않는다면 당신은 사용할 수 있습니다.unistd.h
#include <unistd.h>
int main() {
system("pause");
return 0;
}
출력(영어):
Press any key to continue...
다음과 같은 시스템 독립적인 방법을 사용해 볼 수 있습니다.
system("pause");
이것은 모든 OS에서 작동한다고 생각합니다.
#include <stdio.h>
void myflush ( FILE *in )
{
int ch;
do
ch = fgetc ( in );
while ( ch != EOF && ch != '\n' );
clearerr ( in );
}
void mypause ( void )
{
printf ( "Press [Enter] to continue . . ." );
fflush ( stdout );
getchar();
}
int main ( void )
{
int number;
// Test with an empty stream
printf ( "Hello, world!\n" );
mypause();
// Leave extra input in the stream
printf ( "Enter more than one character" );
myflush ( stdin );
mypause();
return 0;
}
언급URL : https://stackoverflow.com/questions/18801483/press-any-key-to-continue-function-in-c
'programing' 카테고리의 다른 글
node.js 및 mongodb에서 등록 및 로그인 양식 만들기 (0) | 2023.07.19 |
---|---|
.gitconfig를 사용하여 diff 도구 구성 (0) | 2023.07.19 |
셀러리의 대기열에 있는 작업 목록 검색 (0) | 2023.07.19 |
iOS 10.0 런타임 충돌에서 NSCameraUsageDescription? (0) | 2023.07.19 |
다른 최적화 수준이 기능적으로 다른 코드로 이어질 수 있습니까? (0) | 2023.07.19 |