Beginner here. I'm trying to trap a user into entering a positive number. However the while loop doesn't seem to be working for when the user enters and incorrect number.
Output:
Please enter a positive integer: -3
I'm sorry, you must enter a positive integer greater than zero: why?
I'm sorry, you must enter a positive integer greater than zero: -42
I'm sorry, you must enter a positive integer greater than zero: 42
The positive integer was : 42
Press any key to continue....
Code:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void clear_keyboard_buffer(void);
int main()
{
int k;
printf("Please enter a positive integer: ");
scanf("%d", &k);
if (k > 0)
{
clear_keyboard_buffer();
printf("The positive integer was: %d ", k);
}
while (k<=0)
{
printf("I'm sorry, you must enter a positive integer greater than zero: ");
scanf("%d", &k);
return 0;
}
}
void clear_keyboard_buffer(void)
{
char ch;
scanf("%c", &ch);
while (ch != '\n')
{
scanf("%c", &ch);
}
}
gcc -Wall -Wextra -g). Then use the debugger (gdb). Read the documentation (e.g. of scanf etc...) And test the result ofscanf. Consider also usingfgetcto read a single character. Be aware of buffering.