getch (), getche () 와 getchar () 사이의 차이
7297 단어 char
우리는 왜 C++에서 프로그램의 끝에 getch () 를 붙이지 않았는지 물어볼지도 모른다. 소프트웨어는 항상 업데이트되고, 좋지 않은 부분은 당연히 고쳐야 한다. getch () 는 프로그램의 끝에 붙이고, 변수는 부여하지 않기 때문에 이 곳에서는 완전히 스팸 코드이며, 프로그램과 무관하다.C++에서는 이 점을 고려하여 매번 프로그램이 실행될 때마다 종료하지 않고 자동으로 화면을 멈추고 "press any key..."를 표시합니다.임의의 키를 누르고 종료하라고 합니다. 이것은 C++가 환경에서 프로그램을 실행하고 프로그램의 끝에 getch () 를 자동으로 추가하는 것과 같습니다.문장, 그리고 이 문장 앞에 출력 문장cout<<"press any key..."를 추가합니다.프로그램이 끝났다는 것을 알리기 위해 임의의 키를 누르고 계속하세요.실제로 우리가 컴파일한 프로그램은 프로그램이 끝난 것 자체가 멈추지 않는다. 컴파일된 Debug 디렉터리에서 이 컴파일된 프로그램(확장자 exe)을 찾을 수 있다. 폴더에서 두 번 눌러서 실행하면 화면이 깜빡거리면 MS-DOS 창이 닫힌다. 프로그램이 실행되면 자동으로 종료되고 윈도우즈 환경으로 돌아간다. 물론 우리가 DOS 환경에서 이 프로그램을 실행한다면프로그램이 실행된 후에 화면이 정리되지 않기 때문에 DOS 화면에서 프로그램 실행 결과를 직접 볼 수 있습니다.
getch () 와 비슷한 문장이 하나 더 있습니다. getche () 도 헤더 파일conio를 도입해야 합니다.h, 그럼 그것들 사이의 차이는 또 어디에 있습니까?
다른 점은 getch () 가 되돌아오는 디스플레이가 없고 getche () 가 되돌아오는 디스플레이가 있다는 것이다.뭐라고 해야 되지?내가 예를 들면 너는 곧 알게 될 것이다.
--------------------------------------
#include<stdio.h>
#include<conio.h>
void main()
{
char ch;
for(int i=0;i<5;i++)
{
ch=getch();
printf("%c",ch);
}
}
--------------------------------------
여기에 출력을 입력하면 나는 C의 함수 라이브러리를 사용하고 C++의 iostream을 사용하지 않습니다.h, 이건 이따가 얘기할게요.우선 이것은 5번의 연속적인 순환으로 5번의 정지를 실현하고 입력을 기다린다. 우리는 이 프로그램을 컴파일하고 실행한다. 만약에 우리가 각각 abcde를 입력한다면 화면에 나타난 결과는 abcde이다. 이 abcde는ch=getch()가 아니다.에서 출력한 것은 printf("%c",ch)입니다.이 줄의 문장을 없애면 우리가 임의의 키를 다섯 번 누르면 프로그램이 끝납니다. 그러나 화면에는 아무것도 표시되지 않습니다.
그리고 코드에 있는 getch () 를 getche () 로 바꿔서 무엇이 다른지 보고 abcde를 각각 입력합니다. 이 때 화면에 나타난 결과는 aabbccddee입니다. printf ("% c",ch) 를 사용합니다.이 줄의 문장을 다시 삭제해 보면 abcde가 나타납니다.ch=getche () 를 실행하고 있음을 설명합니다.이 문장은 우리가 입력한 키를 화면에 되돌려주는 것이 유일한 차이점이다.
자, C++ 함수 라이브러리를 사용하지 않는 이유를 다시 한 번 말씀드리겠습니다.이 프로그램을 C++ 형식으로 바꾸어 보십시오:
--------------------------------------
#include<iostream.h>
#include<conio.h>
void main()
{
char ch;
for(int i=0;i<5;i++)
{
ch=getch();
cout<<ch;
}
}
--------------------------------------
너는 운행 결과가 완전히 다르다는 것을 알게 될 것이다. 솔직히 나도 그것이 어떻게 컴파일되어 운행되는지 모르겠다. 이전에 나는 C++에서 그것을 이용하여 임의의 키를 계속 유지하는 기능을 실현하면서 이 문제를 발견했다.
getch()에 있는 경우뒤에 cout<<"......"이 있습니다.문장이라면 그는 먼저 아래의cout<<"......"를 집행할 것이다.그리고 getch () 실행하기;정지를 실현하고 때때로 두 문장 중간에cout<
--------------------------------------
#include<stdio.h>
#include<conio.h>
void main()
{
char ch='*';
while(ch=='*')
{
printf("
* , !");
ch=getch();
}
printf("
!");
}
--------------------------------------
우리는 이 순환체에 우리가 원하는 기능을 추가할 수 있다. 프로그램에서 *를 누르면 계속 순환하고 다른 임의의 키를 누르면 종료할 수 있다. 그리고 getch()의 반사되지 않는 특성을 이용하여 우리는 무엇을 눌러도 화면에 흔적을 남기지 않고 우리의 인터페이스를 아름답게 할 수 있다. 만약에 이 기능을 실현하는 더 좋은 방법이 있다면 나는 여기서 이렇게 많은 것을 언급하지 않을 것이다.만약 당신이 정말 더 좋은 방법이 있다면, 반드시 나에게 알려주십시오. 감사합니다.
다음은 내가 다른 사람의 홈페이지에 있는 몇 가지 예를 다음과 같이 옮겨 싣는다.
--------------------------------------
// : getch() getche()
#include<stdio.h>
#include<conio.h>
// : , C , conio.h
// getch();( ), , #include<conio.h> ,
// , C++ , ,
// , !
void main()
{
char c, ch;
c=getch(); /* c*/
putchar(c); /* */
ch=getche(); /* ch*/
putchar(ch);
printf("
");
}
--------------------------------------
// :
#include<stdio.h>
#include<conio.h>
void main()
{
char c, s[20];
printf("Name:");
gets(s);
printf("Press any key to continue...
");
getch(); /* */
printf("
");
}
--------------------------------------
// :getchar() , 。 :
// getchar() , 。
// 。
#include<stdio.h>
#include<conio.h>
void main()
{
char c;
c=getchar(); /* */
//getchar() , c
putchar(c); /* */
printf("
");
}
--------------------------------------
// : , ,
#include<stdio.h>
#include<conio.h>
void main()
{
char c;
while ((c=getchar())!='
') /* getchar() */
printf("%c",c); /* */
printf("
");
}
--------------------------------------
예4의 프로그램이 실행될 때, 우선 멈추고, 문자열을 입력하고, 입력이 끝난 후에, 프로그램이 입력한 모든 문자열을 잃었다. 어, getchar () 는 첫 번째 문자만 되돌려준다고 하지 않았니? 여기는 어때?
서두르지 마, 내가 천천히 설명할게, 조금만 참아, 곧 끝날 거야.왜냐하면 우리가 입력한 문자열은 첫 번째 문자를 취하고 남은 문자열을 버리는 것이 아니기 때문이다. 이것은 우리의 메모리에 있다. 예를 들어 수문을 열고 물을 넣는 것이다. 우리가 물을 수문에 넣은 후에 수문을 한 번 열면 조금씩 놓고 한 번 열면 조금씩 놓는다. 우리가 입력한 문자열도 마찬가지다. 먼저 우리가 입력한 문자열은 메모리의 버퍼에 넣는다.getchar () 를 한 번 호출하면 버퍼에 가장 가까운 문자를 출력합니다. 즉, 맨 앞의 문자를 출력한 다음, 출력한 후에 그것을 방출합니다. 그러나 뒤에 문자열이 있습니다. 그래서 우리는 순환 조건이 충족되지 않을 때까지 맨 앞의 문자를 메모리에서 하나씩 방출합니다.예에서 순환 조건의'실제로는 당신이 문자열을 입력한 후의 리턴 문자입니다. 그래서 리턴 문자를 만나야만 순환을 끝낼 수 있고 getchar() 함수는 입력을 기다리다가 리턴 문자를 눌러야 끝나기 때문에 전체 문자열의 출력을 실현할 수 있습니다.물론, 우리도 순환 조건을 바꿀 수 있다. 예를 들어while ((c=getchar ())!='a'), 무슨 뜻이야? 문자'a'를 만나면 순환을 멈춘다는 뜻이야.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 자료형: 문자와 문자열왼쪽에서 오른쪽으로 자료형을 변환하는 것은 byte가 작은 자료형을 byte가 큰 작은 자료형으로 변환하는 것이기 때문에 자료형 변수 = 변수; 이런 식으로 사용해도 큰 문제가 생기지 않습니다. 따라서, String...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.