2011-12-15 2 views
0

C에서 문자 입력 기능을 실험하고 있습니다. 다음은 실험을 위해 getch 및 getche 함수 호출을 교환하는 프로그램입니다. 나는 getch()와 함께 프로그램을 실행하면getche를 입력하면 화면이 지워집니다.

#include <stdio.h> 
#include <conio.h> 
#define MAX_CHARS 255 
int main(){ 
//getche experiments 
    char buffer[MAX_CHARS+1],ch; 
    int x = 0; 
    while(x<MAX_CHARS&&(ch=getch())!='\r'){//relacing getch here with getche 
     buffer[x++]=ch; 
     putchar(ch); 
    } 
    buffer[x]='\0'; 
    printf("%s",buffer); 
    return 0; 
} 
  • , 나는 최대한 빨리 ( putchar 덕분에) 키보드를 통해 입력으로 인쇄 된 각 문자 를 볼 수 있습니다, 전체 라인은 내가 한 번 눌러 입력 (printf 덕분에 마침내). 그래서 괜찮습니다.
  • 나는 getche와 getch에게 내가 I이었다 내가 두 번 빨리 (getche는 표준 출력 문자를 반향 때문에) 내가 입력 로 인쇄 입력 한 문자의 각을 얻을 후 마지막에 선 를 인쇄 할 것으로 예상 유일한 차이를 교체 할 때 Enter 키를 누릅니다. 그러나 Enter 키를 누르는 즉시 전체 화면 입력 이 지워지고 줄이 인쇄됩니다.

마지막으로 인쇄하기 전에 화면을 지우는 이유는 무엇입니까?

는 당신이 우리가 getche에 대한 설명서를 말한다 모르고 알 수있는 방법은 없습니다

+1

'getch'와'getche' (및 헤더 자체)는 모두 비표준이므로 사용중인 컴파일러와 환경을 지정해야합니다. Turbo C와 같은 고대의 것 같습니다. –

+0

@David Scwartz, @ Paul R - Microsoft Visual Studio 8 컴파일러를 Windows XP에서 사용하고 있습니다. 32 비트 플랫폼 – ZoomIn

+0

OK - 이것을 반영하도록 태그를 수정했습니다. 코드를 이식 할 수 있도록하려면 표준 라이브러리 함수를 사용하고 과 같은 표준이 아닌 레거시 API는 사용하지 않는 것이 좋습니다. –

답변

0

감사드립니다. 그러한 표준 기능은 없습니다. 내 생각 엔 하나의 화면에서 다른 화면으로 쓰는 것입니다. printf. 한 화면 (the raw 'console' screen you echoed to)에서 다른 화면 (프로그램의 표준 출력이 연결된 일반 터미널)으로 전환했기 때문에 화면이 지워집니다.

getche에 대한 플랫폼의 설명서는 무엇이라고 말합니까?

관련 문제