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
'코-딩 > C & C++' 카테고리의 다른 글
asprintf : print로 찍은 내용을 변수에 담기 (0) | 2024.10.02 |
---|---|
C & C++ - 구조체 (0) | 2023.03.23 |
C & C++ - string을 char*으로 변환 (0) | 2022.10.12 |
C & C++ - char* 을 toupper/tolower로 변환하기 (0) | 2022.10.12 |
C & C++ - 자주 사용하는 함수 (0) | 2022.06.24 |