• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

문자를 입력하면 무한 루프가 됩니다

21.06.17 14:42 작성 조회수 183

1

문자를 입력하면 무한 루프가 됩니다.

scanf에서 정수형은 문자 앞까지만 입력을 받는데, 실행 후, 우선 첫루프에 10을 입력하면 10secs 0mins 0hurs가 당연 출력되고, 다음 루프에 a를 입력하면 scanf는 문자까지만 입력을 받으므로 그대로 통과하고  seconds변수에 여전히 10이 남아있어 그런지 scanf에서 대기하지 않고 쭉 계속  10secs 0mins 0hurs를 출력하고 무한루프가 됩니다. 

그리고 처음부터 a를 입력하면 초기화 된 seconds에 0이 있어서 인지 0secs 0mins 0hurs을 출력하고 무한루프가 됩니다.

이 현상을 생각해볼떄  seconds변수에 어떤값도 없어야 scanf를 만날때 컴퓨터는 멈추고 입력을 기다리게 되는 것 같기도 합니다. 

scanf의  &변수(&seconds)가 어떤 의미가 있지 않을까하는 상상을 해보았습니다. 상세 설명 부탁드립니다

답변 2

·

답변을 작성해보세요.

2

안소님의 프로필

안소

2021.06.17

안녕하세요. 

어떤 코드로 실행하셨을 때 질문 사항이 생기신 것인지 그 코드를 첨부해주시면 답변 드리는데 도움이 됩니다. (강의의 코드에서 생긴 질문이라면 해당 코드가 등장하는 강의의 시간대를 구체적으로 알려주시면 됩니다.)

우선 해당 강의에선 교수님께서 코드를 여러번 수정하시기 때문에 질문자님께서 해당 강의의 어떤 코드에서 그런 결과를 얻으셨는지 제가 알기가 어렵네요 ㅠㅠ 코드를 알려 주셔야 제가 자세한 답변을 드릴 수 있습니다.

작성해주신 질문 글을 읽어보니 왠지 관련되어 있을 것 같은 다른 질문글들이 생각나네요. 이 질문 글들에서 제가 드린 답변글 링크를 첨부해봅니다. 아래 링크들을 읽고도 혹시 해결이 되지 않으셨다면 해당 코드 혹은 강의의 시간대를 알려주시면 감사하겠습니다

https://www.inflearn.com/questions/124060

https://www.inflearn.com/questions/189922

https://www.inflearn.com/questions/133852

0

선생님, 잘 이해가 되었습니다. scanf 입력버퍼에 대해 새롭게 이해할 수 있는 기회가 되었습니다. 감사합니다.