I keep getting values as long as the user does not enter a positive integer (and I control if user entered negative values or if user entered an integer). I try to do it without using isdigit
, it enters an infinite loop when I enter a character.
int quantity;
printf("Please enter term(s) number");
scanf("%d",&quantity);
while( 1){
if(quantity<0){
printf("Please enter “positive” number");
scanf("%d",&quantity);
}
if(!(quantity>='0' && quantity<='9')){
printf("Please enter “a” number");
scanf("%d",&quantity);
}
}
Use fgets() to get an entire line. You use strtol() to parse the line as an integer, checking if it consumed the entire line.
char *end;
char buf[LINE_MAX];
do {
if (!fgets(buf, sizeof buf, stdin))
break;
// remove \n
buf[strlen(buf) - 1] = 0;
int n = strtol(buf, &end, 10);
} while (end != buf + strlen(buf));