본문 바로가기
코-딩/C & C++

C언어 - scanf와 \n

by ㅋㅂㅋ 2025. 4. 7.

scanf("%d", &num);의 작동은 입력값 1개를 받고 공백문자가 들어가면 종료되나

 

scanf("%d \n", &num);의 작동은 입력값 1개를 받고 공백문자를 넣어도 종료가 되지 않고 추가적인 입력값을 기다린다.

 

형식(format) 문자열에 있는 공백문자(white-space)는 그 다음에 공백 문자가 아닌 문자(non-white-space)가 올때까지 입력버퍼(stdin)에서 읽어들이라는 뜻이기 때문이다.

 

그리고 읽어들인 문자는 버퍼에 저장되어 이후에 추가 입력을 받으면 기존에 있던 버퍼의 내용을 가지고 오므로 문제가 발생할 수 있다.

 

ex)

int num;

scanf("%d\n", &num); > 10, 20 입력

printf("%d\n", num); > 10출력

scanf("%d", &num); > 입력 생략됨

printf("%d", num); > 20 출력
printf("%d", num); > 20 출력

 

참고

https://electro-don.tistory.com/entry/scanf-n-%EA%B4%80%EB%A0%A8

 

scanf '\n' 관련.

프로그램 저지 사이트를 돌아다니면서 코딩을 해보면 의외로 시간을 잡아먹는 부분이 입력 처리 부분이다. 내가 C언어를 쉽게 쉽게, 띄엄 띄엄 배워서 그런지 디테일이 영 엉망이라 곤혹스럽다.

electro-don.tistory.com