scanf의 버그(?)

 printf("개수를 입력하세요 ->");
 scanf("%d",&count);

 printf("문자를 입력 ->");
 scanf("%c",&temp);

 

간단하게 이렇게 scanf를 연속적으로 호출해보면 두번째 scanf는 무시되는걸 볼수 있다.

여기서 중요한건 두번? scanf는 char 형으로 입력을 받아야 된다는 점이다.

 

오래전부터 궁금했던 거였는데 오늘 그 사실을 알게되었다.

scanf("%d",&count); <<- 여기서 숫자를 입력하고 [ 엔터 ]를 치게 되면

 

count에는 숫자가 입력되지만 그 뒤쪽에 [ 엔터 ]문자와 같이 넘어 오는 것 같다.

 

이어서 scanf("%c",&temp); 로 1byte의 문자를 얻어 오면 위에서 이미 입력되어저 있는

[ 엔터 ] 기호가 넘어온다.

이 엔터 기호가 넘어 오기 때문에 두번째 scanf 에서는

 

scanf("%c%c",&temp,&Value);

 

temp 변수에는 엔터 문자가 들어가고 뒤에 Value 변수에는 지정한 값이 넘어온다.

'나만의 강의' 카테고리의 다른 글

[펌] [ 강 좌 ] Fade In Fade Out  (0) 2004.09.11
[펌] 질문하시기에 앞서...  (0) 2004.09.10
[펌] 포인터는 정말 우스워  (0) 2004.08.25
[펌] Standard C++ Library(STL) 배워보기  (0) 2004.08.23
강의 계획 2!!  (2) 2004.08.19
칼루
나만의 강의 2004. 9. 4. 09:38
,
Powerd by Tistory, designed by criuce
rss