Programming
[C] scanf, gets 함수의 차이
낭강
2019. 5. 6. 15:31
scanf, gets는 입력을 받을 수 있다.
예제에서 scanf로 나이를 입력받고 gets 함수로 문자를 입력받을려고 합니다.
하지만, scanf의 입력버퍼를 날려주지 않고 gets 함수로 넘어가게 되면 오류가 발생합니다.
따라서 scanf의 입력버퍼를 날려주는게 필요합니다.
가장 많이 사용하는 예시를 나타내었습니다.
gets 함수는 입력버퍼가 없으면 입력받을 수 있고
입력버퍼가 있다면 그대로 출력을 하게됩니다.
따라서 이런 상황에서는 입력버퍼를 제거하고 입력받는게 옳습니다.
입력버퍼의 제거에는 fflush(stdin) 등 여러가지가 있습니다.
하지만 사진과 같은 형식을 사용하는게 모든 운영체제에 적합하게 작동합니다.
따라서 저 방법을 숙지하는게 중요하다고 생각합니다.
scanf = 단어를 입력받는다.
gets = 문장을 입력받는다.
<안녕하세요, 저는 광이입니다.> 문장출력 예제
이 예제에서 이 모든 문장을 출력하기 위해 코딩을 하게되면
scanf로 입력받아 출력하게되면
원하는 출력 값이 나오지 않을 것이다. 이것은 당연하다.
공백도 하나의 문자로 간주하고 끝내기 때문이다.
따라서 이러한 문장을 입력받기 위해서는 gets함수를 사용하는게 적합하다.