C언어 if문 질문드립니다

조회수 2256회

while(1){

            printf("숫자를 입력해주세요 ");
            scanf("%d %d", &get_num1,&get_num2); 

            while(getchar()!='\n');
            if(get_num1<0 || get_num1>a || get_num2<0 || get_num2>b-1){

                printf("값의 범위를 알맞게 입력해 주세요.");
                continue;
            }

            /*
            else if(){
                // 만약 사용자가 문자를 입력하였을 경우
                printf("잘못된 입력방식입니다");
                continue;
            }
            */

            else
                break;

소스의 일부인 숫자만 입력 받는 반복문입니다. 숫자 2개를 입력받고 저 while문에서 주석 처리한 부분의 else if문의 조건에 뭘 넣어도 계속 오류가나서 질문드립니다 else if문은 문자나 한글을 안받도록 하고 싶은데 어떻게 해야할지 모르겠습니다...

else if(sizeof(get_num1)==4 || sizeof(get_num2)==4) 이런식으로 하고 실행해보면 그냥 넘겨버리네요

읽어주셔서 감사합니다

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 코드도 부분밖에 없어서 정확한 파악이 힘듭니다.

    else if(sizeof(get_num1)==4 || sizeof(get_num2)==4)

    위의 코드는 숫자인지 판단하는 것이 아니라 get_num1 과 get_num2 의 자료형 크기가 4바이트인지 여부입니다.

    문제해결 방법은 여러가지가 있을 수 있습니다.

    scanf 함수 결과는 성공이면 1 실패면 0을 리턴합니다. 숫자만 받기 위해 %d라고 주었다면 문자를 넣으면 0을 리턴받습니다. 즉 scanf 함수의 결과로 숫자/문자 여부는 판단이 가능합니다.

    또한 strtol 함수를 활용하여 처리할 수도 있습니다.

    http://ehclub.co.kr/818

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)