작성
·
160
1
교수님께서 작성하신 강의답안에서 질문이 있습니다.
보면 scanf함수를 따로 쓰지 않고 status = scanf("%d", &num);만 입력하셨는데 이렇게 적어도 scanf함수가 동작하는 이유가 궁금합니다.
또, 이 윗줄 바로 위에 scanf함수를 따로 실행해도 상관없는지도 궁금합니다.
답변 1
2
안녕하세요, 질문&답변 도우미 Soobak 입니다.
scanf()
함수의 원형은
int scanf(const char* format, ...);
으로 반환값이 int
자료형이며, 값은 '성공적으로 읽어들인 변수의 개수' 입니다.
따라서, status = scanf("%d", &num)
은 scanf("%d", &num)
함수가 동작한 이후, status
변수에 '성공적으로 읽어들인 변수의 개수' 를 반환하게 됩니다.
즉, 사용자가 정수를 올바르게 입력했다면, 하나의 정수를 읽어들여 1
을 반환하고, 그렇지 않다면 0
이나 EOF
를 반환합니다.
이렇게, 반환값을 통하여 scanf()
함수가 성공적으로 값을 읽었는지 확인하기 위해 유용하게 사용됩니다.
scanf()
함수를 두 번 연속하여 사용하셔도 문제는 없습니다.
다만, 첫 번째 scanf()
함수가 실행되어 입력을 읽어들인 후,
표준 입력 버퍼에 남아있는 '다음 입력'을 두 번째 scanf()
함수가 처리하는 과정으로 진행된다는 점을 참고하시면 좋을 것 같습니다.
참고 : cppreference - std::scanf (링크)
감사합니다!