Search code examples
cloopsintegercharacteruser-input

User Input of Integers Infinite Loop Until User Inputs a Character (C)


i'm new to C - I have intended to make a program that shows whether the user input int is odd or even, until the user decides to quit by inputing a char 'x'. The loop kind of works by detecting odd numbers and terminating the program with 'x', however glitches with even numbers - why is that so? Would appreciate it if you could point out the flaws in the code. Thank you

#include <stdio.h>

int main(void)

{
int i=0;
char x = "x";

printf("Enter an integer to check whether your number is odd or even\n");
printf("Enter an ´x´ at any time to quit the program\n");

do
{ 
    scanf("%d", &i);
    
        if (i % 2 == 0) 
        {
            printf("The number is even\n");
        }
        else if (i % 2 != 0)
        {
            printf("The number is odd\n");
        }   
        else("%c ", &x);
        {
            scanf(" %c", &x);
            getchar();
            printf("The program will now terminate\n");
            return 0;
        }
}
    while (i > 0);
        i++;

    return 0;
}   

Solution

  • Very close but I've marked a couple of changes:

    #include <stdio.h>
    
    int main(void)
    
    {
    int i=0;
    char x = 'x';  // Note: single quotes for char, double for string
    
    printf("Enter an integer to check whether your number is odd or even\n");
    printf("Enter an ´x´ at any time to quit the program\n");
    
    do
    { 
        int n = scanf("%d", &i);  // Check if number was read
        if (n == 1) {
            if (i % 2 == 0) 
            {
                printf("The number is even\n");
            }
            else  // Only other possibility
            {
                printf("The number is odd\n");
            }
    
        } else   // No number, see if there's an 'x'
        {
                scanf(" %c", &x);
                if (x == 'x') 
                {
                     printf("The program will now terminate\n");
                     return 0;
                } else
                {
                     printf("Unknown input %c\n", x);
                }
        }
    }
        while (i > 0);  // Will also end if user enters <= 0
    
        return 0;
    }