[블로그 이전]
2021.01.18
scanf를 연달아서 쓰게 되면 %c를 입력받을 때 오류 발생할 수 있음.
ex)
scanf("%d",&a); scanf(%c",&c);
이 경우 버퍼에 문제 발생한 것.
위에서 a를 입력받을 때 \n까지 같이 입력받아서 이를 c로 인식하는 것.
따라서 c를 입력받지 않고 프로그램이 종료 됨.
<해결법>
1. %c 앞에 띄어쓰기 붙인다.
scanf(" %c",&c);
----> 가끔 안될 때 있음. 이유 모름
2. buffer을 비워준다.
while(getchar()!='\n');
----> 위의 구문을 추가해 준다.
----> 이 오류는 자주 발생할 수 있으므로 처음에 DEFINE 해놓고 쓰는 것도 유용.
#define FLUSH while(getchar()!='\n'); int main(){ scanf("%d",&a); FLUSH; scanf("%c",&c); }
🎀---> 가끔 이때문에 시간초과가 날 수도 있다!!!
ex) for문 안에서 FLUSH를 쓰면 마지막 입력 받은 후에 불필요한 FLUSH를 위해 입력을 기다려야 함
--> 시간초과
'⚙️C,C++' 카테고리의 다른 글
[C++] vector 사용법 (0) | 2025.02.20 |
---|---|
[C++] C++ 기본 (0) | 2025.02.20 |
[C] 재배열 문제 (0) | 2025.02.20 |
[C] 입력 이슈들 (0) | 2025.02.20 |
[C] 출력 이슈들 (0) | 2025.02.20 |