pattt
pattt

Reputation: 1

if statement unable to check the value

can someone tell me what's wrong with this code. The value is being stored in 'ch' but if statement is unable to validate it.

scanf(" %c", &ch);
            if (ch == 4){
                    printf("Correct Answer \n");
                    score++;
            }
            else{
                    printf("Wrong Answer \n");
            }

Upvotes: 0

Views: 63

Answers (2)

Chris
Chris

Reputation: 36611

Note that char is a numeric type, so this will compile and run, but not do what's expected because we've read a char (with format specifier %c into a char variable ch, but then compare it to the number 4 rather than the character '4'.

You should also get in the habit of checking the return value of scanf as a failure to read into ch if it's uninitialized will lead to unexpected behavior.

if (scanf(" %c", &ch) != 1) {
    // Something to handle the error.
}

if (ch == '4') {
    printf("Correct Answer \n");
    score++;
}
else {
    printf("Wrong Answer \n");
}

Upvotes: 0

Raildex
Raildex

Reputation: 4765

%c means you are expecting a character. So a 4 you input, is not an integer 4, but a character '4'.

Simply check for ch == '4'

Upvotes: 1

Related Questions