#include <stdio.h>
int main(void)
{
int num = 0;
while( true )
{
(__iob_func())->_cnt = 0;
printf("1~100입력 : ");
scanf("%d",&num);
if( (__iob_func())->_cnt == 1 && 1 <= num && num <= 100 )
{
break;
}
else
{
printf("다시입력\n");
}
}
printf("입력한숫자 %d : ", num );
}
배열 ㄴㄴ해
잘짜는건 인정 하지만 개고수 ㄴㄴ
어유 배열들언간것같아 당황하셧어요?ㅋㅋㅋ 수정해드림ㅋㅋ
님한테 개고수 바라고 하는거 아닌뎅ㅋㅋㅋ 그리고 이렇게 안하면 방법없음 좋은거 가르처주는거야
이거 나처럼 하는사람 단한번도 못봤는데
자세히보면 입력버퍼 비우는코드도 있슴 잘찾아보셈
__iob_func() 이게 입력버퍼임?
명란젓코난 정확히 말하면 그함수가 리턴하는게 stdin임. _cnt는 입력버퍼에 담긴 데이터크기임
scanf가 정상입력받으면 _cnt는 1이됨 왜냐면 알다시피 엔터키가 버퍼에 남으니까
_cnt를 0으로 두면 scanf가 데이터가 비었다고 판단하고 입력버퍼의 내용을 읽어오지 않음
입력버퍼 비우는데 while(getch() != '\n'); 나 fflush(stdin);을 쓰지만 각각 문제점이 있음, while을 이용하는경우 만약 버퍼에 엔터값이 없었을때는 엔터를 눌러야하는 문제가 있고, fflush(stdin)는 윈도우환경 컴파일러에서만 동작하고.ㅇㅇ
iob func 처음봄