제 답안에서...

gwpia0409 Reply 6 years 4 weeks ago
제가 반복적으로 겪고 있는 문제인 거 같은데, 빌드 해서 실행시킬 때 입력값을 1줄 넘어가게 주지 못합니다. 다시 말해서, 실행시킬 때 입력을 하다가 enter를 누르면 바로 실행이 되어버리네요. 원래 ^Z를 기입한 후에 enter를 눌러야지 실행되어야 하는 것 아닌가요?
onacloud Reply 6 years 4 weeks ago
결과적으로 지금처럼 실행되는 것이 정상적입니다. getchar는 문자하나만 읽는 함수긴 하지만, 실제로는 엔터가 눌렀을때 한꺼번에 실행됩니다. 예들 들어 첫번째 getchar함수가 호출되면 입력을 기다리는 상태가 됩니다. 이때 abc(엔터)를 입력합니다. 그러면 첫번째 getchar함수가 'a'를 return하고 프로그램이 진행됩니다. 두번째 getchar함수가 호출되면 기다리지 않고 바로 'b' 를 return합니다. 세번째 getchar함수가 호출되면 기다리지 않고 바로 'c' 를 return합니다. 네번째 getchar함수가 호출되면 기다리지 않고 바로 '\n' 를 return합니다. 다섯번째 getchar함수가 호출되면 사용자 엔터를 입력할때가 기다립니다.
gwpia0409 Reply 6 years 4 weeks ago
그러면... 엔터칠 때 실행하지 않고 ^Z 할 때만 실행하도록 하려면 어떻게 바꿔야 하는 거죠..?
onacloud Reply 6 years 4 weeks ago
그럴려면 모든 입력된 라인을 저장해 두었다가 나중에 실행해야 합니다. 더 어려워 지죠.
gwpia0409 Reply 6 years 4 weeks ago
그럼 getchar를 이용하면 여러 line을 입력하는 것이 불가능한 것인가요? 예를들어... 이번 문제같은 input을 받으려면 getchar를 쓰면 안 되는 것인가요 ??
gwpia0409 Reply 6 years 4 weeks ago
accept가 되긴 했는데,,,비쥬얼 스튜디오에서 실행해보면 Lorem ipsum dolor sit amet, consectetur adipisicing elit, \ \sed do eiusmod tempor incididunt ut labore et dolore magna 을 입력하면 Lorem ipsum dolor sit amet, consectetur adipisicing elit, \ Lorem ipsum dolor sit amet, consectetur adipisicing elit, \\ \sed do eiusmod tempor incididunt ut labore et dolore magna 이렇게 출력되고 엔터를 한번 더 눌러야 두번째 줄이 원하는대로 출력되네요.... 두 줄이 한번에 실행되어 결과가 깔끔하게 두줄로 붙어 나와야 하는 거 아닌가요? 왜 accept가 되었는지도 잘 모르겠습니다 ㅠ