0

I'm stuck on a while loop exercise. The program seems to work fine as long as I only enter integers. However, if I enter a character, a symbol or a real number with decimals (even integers such as 1.0), I get a infinite loop.

int main() 
{
    int num;
    printf("Enter an odd number 1 and 10.");
    while(1) 
       {
        printf("\n\nEnter : ");
        scanf("%d", &num);

        if(num == 0)
            break;
        else if(num < 0 || num > 10)
            printf("You entered number is beyond the range.");
        else if(num % 2 == 0)
            printf("You entered an even number.");
        else
            printf("You entered a correct number.");
       }

   printf("You are exiting the program.");      
   return 0;
} 
Fabio_MO
  • 713
  • 1
  • 13
  • 26
Jero Won
  • 1
  • 1

1 Answers1

0

However, if I enter a character, a symbol or a real number with decimals ? Then you have undefined behaviour as scanf() expecting int argument but you are providing other than int argument.

even integers such as 1.0 ? No, 1.0 is not an integer it's a real number.

Check the return value of scanf() to know whether it's success or fail. Open man 3 scanf and analyze. For e.g

int ret = 0;

ret = scanf("%d",&num);

if(ret != 1) { /* Error handling */ }

Achal
  • 11,821
  • 2
  • 15
  • 37