Reputation: 11
As long as the input is not x, the loop will continue to ask for the input and it prints out either A or B.
int main (void){
char input;
while( input != 'x'){
printf("Enter Input:");
scanf("%c", &input);
if (input == 'a'){
printf("A \n");
}
else{
printf("B\n");
}
}
return (0);
}
The problem is that everytime after i entered the input, it prints the output and it also prints out "Enter Input:B" in a new line no matter i entered a or b or anything else as input. Can anyone tell me how can i solve this problem, Thanks!
Here is what happened:
Enter Input:a
A
Enter Input:B /after the output it always prints this line, how can i get rid of it??/
Enter Input:a
A
Enter Input:B
Enter Input:b
B
Enter Input:B
Enter Input:b
Upvotes: 1
Views: 24377
Reputation: 8948
The error is because the newline character is read from input.
You can refer to this one too : Why doesn't getchar() wait for me to press enter after scanf()?
Upvotes: 0
Reputation: 182649
In order to ignore newlines, the scanf
should likely be:
scanf(" %c", &input);
^
Also you probably want to flush stdout right after that printf
:
printf("Enter Input:");
fflush(stdout);
Upvotes: 4
Reputation: 94645
You need to eat a newline
char:
scanf("%c", &input);
while((ch=getchar())!='\n');
Upvotes: 1