C언어 getch() 함수 선입력 문제

조회수 584회
#include <stdio.h>
#include <conio.h>
#include <Windows.h>

void main()
{
    char buff;
    while(1)
    {
        buff = getch();
        Sleep(1000);
        printf("%c\n",buff);
    }
}

위와 같은코드에서 www를 입력했을때,

한번만 w가 출력되고 getch() 함수의 사용자입력대기 상태가 되게 하려면

어떤식으로 수정해야할까요....

입력버퍼를 fflush(stdin)으로 삭제해도 소용없고,

getchar()로 입력버퍼를 없애자니 \n이 없는 입력버퍼를 지우기엔 어려울거같습니다...

좋은 방법이 있을까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); 를 사용해 보시기 바랍니다.

    #include <stdio.h>
    #include <conio.h>
    #include <Windows.h>
    
    void main()
    {
        char buff;
        while(1)
        {
            buff = getch();
            Sleep(1000);
            printf("%c\n",buff);
            FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
        }
    }
    

    감사합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)