담주면 복학이라 부랴부랴 c언어 공부하고있는데
정말 쉬운데 나로서는 도저히 이해가 안되는 문제가 발생함
----------------------------------------------------
#include <stdio.h>
int main()
{
int age;
char sex;
printf("나이 : ");
scanf("%d", &age);
printf("성별 : ");
scanf("%c", &sex);
if (age>=20 && sex=='f'){
printf("adult & female\n");
}
return 0;
}
----------------------------------------------------
소스인데 이대로 컴파일 하고 실행하믄 나이 입력받고 성별을 입력 받아야 하는데
성별 입력받는 부분을 그냥 넘어가버림
뭐지? 하고 나이 입력받는거랑 성별 입력받는걸 순서를 바꿔봄
그랬더니 정상적으로 둘다 입력받음
뭐가 문제인거??
if문을 20미만으로 적은건 아니지?
나이 입력하고 엔터친게 성별에 들어가버림...중간에 fflush 인가 넣어줘야함...
fflush(stdin)
아하! 엔터가 값으로 들어가버린거고만 .. 감사감사
가만 그러면 이 문제는 문자타입 입력받을때만 그런건가?
엔터가 문자이니 그런듯...
호옹이.. ㅇㅋ 감사 많이 배워감
버퍼에 엔터키가 남아있어서 그런거임 정수형입력받을때는 정수형밖에 못받는데 엔터키는 \n문자취급 받으니까 정수형에 입력이 안되서 버퍼에 남아있게 되는데 그다음에 scanf호출하면 버퍼에 남아있던 엔터값이 들어가서 바로 넘어가는거라 버퍼를 초기화 해주면 되는데 fflush(stdin)은 비표준함수임 그러니까 getchar써서 엔터키 지우는 방법을 추천 scanf("%d",&age;); getchar(); ...... 이런식으로
ㅇㅋ 이해했음 자세한 설명 감사