+ 2
Can anybody help me out with the right input way?
I have inputted like this 1 7 Y 1 8 Y 3 n, it gives output as 0807 instead of 87 just , https://code.sololearn.com/c8DO6ClGWviV/?ref=app
3 ответов
+ 2
Abhay
You're welcome. And about the reason for the space:
When we enter a menu choice we type a number followed by {Enter} key, also when we type a number to insert a new value into the stack - we type the number and hit {Enter} key.
It is the character of that {Enter} key that was left in the input buffer. scanf uses that leftover character when it sees that an input is needed for <option> variable.
If we put space before the %c - that leftover character will be ignored (because a space is not a format specifier), and the letter we type ('y' or 'n') will be stored correctly in <option> variable.
To confirm this you can test the scanf call for <option> variable like this:
scanf("%c", &option);
// no space before %c
printf("%d", option);
// output 10, the ASCII code for {Enter} key
I hope this shades a light even just a bit : )
+ 3
I think you have written the input in a correct sequence, the problem is in the code. Make a few correction and I guess it'll work well.
● In the switch statement:
case 4:
break; instead of exit(0);
* There's no need to force exit when we can simply exit the menu loop.
● When asking confirmation:
scanf(" %c", &option);
* Notice the space before the %c specifier, it was necessary because the input stream buffer has a leftover byte from previous input. The leftover byte will be consumed in by the space.
● In the display function:
* Do check whether there is any data (top != -1) before going through the loop printing the data.
Try to make this changes and let me know how it goes.
+ 1
Ipang ,wow the only thing missing was space before that %c ,which I would have never ever able to correct ,thks a lot and I still dunno why that space is really needed ,I have never given a space before % c lol , maybe it's due to the compiler ? or it will give 0 everywhere?