시도하는코딩
247
2019-12-15 23:21:17
2
593

c언어 입력유효성검사 질문


int getint(void)

{

int input;

char ch;

while(scanf("%d",&input)!=1)//입력이 정수가 아닌동안

{

while((ch=getchar()) != '\n')//입력이 문자이면 입력을 비운다

printf("error! you inputted character!\n");

printf("input a number 0 between 100\n\n");

}

return input;

}


와 같은 함수를 만들었습니다. 여기서 입력을 ㅁ을 하게되면 printf("error~~~");부분이 두번 출력되고 밑에 printf("input a number~~"); 부분은 한번만 출력하게되는데 왜인가요?

a를 입력시에는 정상적으로 출력됩니다.

as를 입력시에는 ㅁ입력시와 동일하게 error부분이 두번출력 후 input 부분은 한번 출력됩니다. 왜 ㅁ을 입력하면 그렇게 되는건가요??

0
  • 답변 2

  • rezigrene
    1k
    2019-12-16 01:43:54
    한글을 2byte 로취급해서 그런듯합니다.
  • 시도하는코딩
    247
    2019-12-16 23:16:21

    rezigrene

    감사합니다 한글을 2byte 취급한다는것은 처음알았네요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.