scanf 사용시 버퍼에 남은 linefeed 처리
3
a
위와 같은 인풋을 아래의 scanf로 받는다고 하자.
scanf("%d", &num);
scanf("%c", &ch);
결과는 str에 a 캐릭터가 들어가지 않고 빈 문자열이 들어간다.
scanf가 3을 받고나서 버퍼에 \n가 남아있는 상태가 되고,
두번째 scanf가 \n을 받고 끝내버리기 때문이다.
이를 방지하기 위해서는 캐릭터를 입력받는 scanf의 포맷스트링 앞에 ' ' 공백을 추가해주면 된다.scanf(" %c", &ch);
버퍼 앞의 공백
, \n
, \t
가 모두 무시된다.
'CS > C++' 카테고리의 다른 글
lvalue와 rvalue의 이해, 증감연산자와 앰퍼센드 연산자 (0) | 2022.07.19 |
---|---|
STL sort 함수 사용법 (0) | 2022.07.19 |
우분투에서 scanf()로 EOF 입력하기/받기 (0) | 2022.06.29 |
포인터변수의 이해와 주소연산자 (0) | 2022.06.28 |
배열과 포인터의 공통점과 차이점 (0) | 2022.06.28 |
댓글