본문 바로가기
프로그래밍/C

[ C언어 ] scanf의 리턴값

by eteo 2022. 4. 27.

 

놀랍게도 scanf에는 리턴값이 있다.

함수가 읽어들여 저장에 성공한 데이터 개수가 반환값이다.

 

 

 

예를들어 위의 경우에는 정수 2개를 b, c 변수에 저장하는데 성공했으므로 리턴값이 2이다.

 

 

 

 

 

 

 

 

정수를 입력해야하는데 문자를 입력한 경우 변수 b, c에 저장하는것 둘 다 실패했으므로 리턴값이 0

 

 

 

 

 

 

 

변수 b에 저장하는 것만 성공했으므로 리턴값이 1

 

 

 

 

 

 

그런데 순서를 바꿔서 a 1 을 입력하면 scanf의 리턴값이 0이다.

 

 

이는 변수 b에 저장되지 못한 문자들(개행문자 포함)이 입력버퍼에 남아 그 다음 입력을 방해하니 변수 c에 저장하는 것 또한 실패한 것이다.

 

 

 

이에대한 해결방법 링크 : 

https://eteo.tistory.com/33

 

scanf, scanf_s "%d"로 정수 입력 받으려다 문자(열)이 잘못 들어왔을 때 무한루프에 빠지는 문제/문장

사용자가 꼭 우리가 기대한대로 입력하라는 법이 없으니 이러한 예외처리도 필요하다. scanf, scanf_s %d로 정수 입력 받으려다 문자나 문자열이 들어왔을 때 무한루프에 빠지는 문제 혹은

eteo.tistory.com