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 함수를 활용하여 처리할 수도 있습니다.
댓글 입력