Hi
Just started learning c for uni (usually use objective c) and have run into a strange issue with scanf, i have the following code
while(stringCheck == 0){
scanf("%c",&computerType);
computerType = toupper(computerType);
if ( computerType == 'L') {
/*set stringCheck to 1 so the scanf while loop breaks*/
stringCheck = 1;
counter = 0;
} else {
printf("ERROR\n");
}
}
This i printing out “ERROR” then asking for input (so it is skipping the scanf statment the first time). If i change the it to another variable that is a string it works fine, it stops on the first time.
The rest of the code works fine, its just the fact that it print an error as soon as it enters the loop that is annoying.
I have tried getChar() and it does the same thing.
Thank you for any help you have to offer.
If it’s printing an error the first time you enter the loop, then there’s already something in the input buffer. I’ll guarantee (assuming your compiler is not brain-dead) that it is not skipping the
scanf. You should check what it’s actually receiving by changing:to:
I would suggest that it’s the newline from the last time your program ran that code (you say it’s the first time but it’s unclear as to whether you mean the first time into that loop ever (since program started) or first time entering that loop but you’ve been through it before on this program run.
When you enter LENTER the first time, your code will pull out the
Lbut not theENTER. If you then call that code again, it will get theENTERkey.You should either understand and allow for what’s actually entered or use a safe and sound input function like this one.