부트캠프/본캠프

[내일배움캠프_2025JUL18] 콘솔 입력 버퍼

Young_A 2025. 7. 18. 21:06

목차

    오늘의 학습 키워드

     

     

    TIL 작성 창을 계속 켜두고 그때마다 들어와서 수정하는데...

    그러다 창 끄고 작성한 걸 날리는 바람에... 일단 비공개 포스팅 하고 나서 수정하면서 작성하려고 한다.

    후에 제출할때만 공개 설정 변경하려고 한다.

     

    원래는 자동으로 임시저장이 되어서 불러오기가 쉬운데, 다 날아갔음... 멍... 


    Console. 입력 버퍼

     

    오른쪽 사진이 처음 시작했을 때 화면이고, 오른쪽 사진은 도적이나 궁수 같은 구현되지 않은 직업을 선택했을 때의 화면.

    확인해보니 "이름을 입력하세요:" 이후 Console.ReadLine()에서 입력을 받지 않고 종료되는 것 같았다.

     

     

    AI 도움 안 받고 해결해보려고 구글링 한건데, AI Overview가 자동으로 떠서... 일단 입력 버퍼라는 걸 확인해봤음.

     

    입력 버퍼 (Input Buffer)

    키보드로 입력한 내용을 운영체제가 일시적으로 저장해두는 메모리 공간이다.

    유저가 키를 누르면, 입력은 바로 프로그램으로 전달되지 않고 버퍼에 먼저 저장된다.

     

    Console.ReadLine()이나 Console.ReadKey() 같은 메서드는 이 버퍼에서 문자를 꺼내온다.

    다만, Console.Read() 같은 경우는 버퍼에 저장하고 꺼내오지 않는다.

    이는 줄바꿈 문자 \n이나 \r도 버퍼에 포함되므로,

    Console.Read()과 같이 키 입력을 받은 후에 활용을 하지 않을 거라면 다음과 같이 버퍼를 비워주는 것이 좋다.

    //줄바꿈만 제거
    while (Console.In.Peek() == '\n')	//버퍼에 줄바꿈'\n'이 존재하는지 확인만 함
    {
        Console.In.Read();	//없애버려라
    }
    
    //혹은
    while(textReader.Peek() != -1)	//일단 뭐든 존재하면
    {
        Console.In.Read();	//없애버려라
    }

     

    내 경우에는 InputHelper.WaitResponse()에서 사용자의 아무키나 입력 받는 다는 게 Console.Read()를 사용하여 벌어진 일이다.

    다음과 같이 코드를 변경해주었다.

    public static void WaitResponse()
    {
        Console.WriteLine("다음으로 넘어가려면 아무거나 누르세요");
        Console.ReadKey(true);	//Console.Read() 사용했다가 변경
    }

    느낀점

    ㅋㅋㅋㅋㅋㅋㅋㅋ오늘 리팩토링 자잘한 버그들 나올때마다 수정하고 리팩토링하고, 하다보니까... 정신없이 오후 시간이 지났다.

    오늘은 일찍 자려고 했는데... 못할 듯 싶다.

    대신에 트릿으로 매운 닭날개 시켜먹어야지.. 안그러면 힘들어서 못 견딜 것 같다.

     

    예전에 회사에서 일할 때는 점심 시간 저녁 시간 칼 같이 지키고 일 시작했었는데,

    오늘은 칼 같이 식사 10분 컷으로 끝내고 복귀해서 코딩을 했다.

     

    자잘한 버그가 계속 나오는 건, 규모가 커지면서 어쩔 수 없는 것 같다.

    다행히도, QA는 팀원 분들이 해주실 것 같다!


    내일 학습 할 것은 무엇인지

    보니까 발제에 제시된 기능대로 따라간게 아니라 우리 해석대로 따라간 것이 많아서... 이 부분들을 어떻게 고쳐야할 것 같다.

    QA 진행 해주신 것들을 하나씩 쳐내고, 전투 부분을.. 다시 구현하긴 해야할 것 같다.

    내 쪽에서 화면이 자꾸 깨져서 (언어팩 문제인듯.. 근데 다운 받을 수 있는 다른 한글 언어팩이 없다...) 그 분 걸로는 이어서 만들기가 너무 힘들 것 같다...ㅜㅜ