인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

maybe님의 프로필 이미지
maybe

작성한 질문수

홍정모의 따라하며 배우는 C언어

8.6 입력 확인하기

입력값에 대한 질문

작성

·

142

0

long get_long(void);

int main()

{

while (1)

{

printf("Please input a integer between 1 and 100.\n");

long num = get_long();

if (num > 1 && num < 100) {

printf("ok\n");

break;

}

else

printf("wrong\n");

}

return 0;

}

long get_long(void)

{

printf("Please input an integer and press enter.\n");

long input;

char c;

while (scanf("%ld", &input) != 1)

{

printf("Your input - ");

while ((c = getchar()) != '\n')

putchar(c);

printf(" - is not an integer. Please try again.\n");

}

printf("Your input %ld is integer.\n", input);

return input;

}

이번 수업 코드에서 123d 처럼 정수+문자를 넣게 되면 scanf가 123은 정상적으로 입력받아 올바를 출력은하지만 d가 출력이 잘못 되어서

Please input a integer between 1 and 100.

Please input an integer and press enter.

123d

Your input 123 is integer.

wrong

Please input a integer between 1 and 100.

Please input an integer and press enter.

Your input - d - is not an integer. Please try again.

이런식으로 출력되는데 어떻게 해야하나요

답변 1

0

작성해주신 코드에 따르면

scanf("%ld", &input)

ld 형으로 입력을 받는데

123d라고 입력을 하시면 d까지도 숫자로 인식합니다.

isdigit 등의 함수를 활용해보길 바랍니다.

maybe님의 프로필 이미지
maybe

작성한 질문수

질문하기