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