scanf 에 대한 문제
글쓴이: dopesoul / 작성시간: 목, 2004/12/02 - 3:48오후
#include <stdio.h> int main(void) { int i; char b; printf("a"); scanf("%d",&i); printf("b"); scanf("%c",&b); }
와 같은 코드에서 scanf("%c",&b); 가 먹히는 문제가 발생합니다.
scanf("%c",&b); 전에 fflush(stdin) 을 하면 해결이 됩니다.
또는 scanf("%c",&b); 를 scanf("%d",&i); 보다 먼저 받게되어도
해결됩니다. 그러나 위 코드에서 scanf("%c",&b); 가 미리 입력받아지는
이유가 궁금하네요.
Forums:
저문제는...
스트림 버퍼에 값이 남아있어서 그런것으로 알고있습니다
\n이 남던가 그랬던것 같은데...
fflush(stdin);
을 실행하면
stdin에 남아있는 값을 버리기 때문에 scanf("%c",&b)가 정상적으로 작동하게 됩니다.
%c는 공백문자를 무시하지 않기 때문입니다. 그러나 저러나 fflush(
%c는 공백문자를 무시하지 않기 때문입니다. 그러나 저러나 fflush(stdin) 은
잊을 만 하면 또 나오는군요. :? 이식성이 없는 방법입니다.
http://bbs.kldp.org/viewtopic.php?t=25929&highlight=을 참고하세요.
scanf("%c",&b); -> scanf("%s",&am
%c를 %s로 바꾸면 buffer에 있는 내용을 \n을 포함해서 받아옵니다.
b에 넣을때는 \n이 잘리겠죠^^
남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.
[code:1]scanf ("%d\n", &
로 해보세요. scanf 의 format 문자열에서 제외를 의미합니다.
저기선 \n을 포맷형태로 받아 들어셔 \n가 입력으로는 포함되지 않습니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기