Heres a part of my code:
printf(\"\\nEnter amount of adult tickets:\");
scanf(\"%d\", &TktAdult);
while (TktAdult<0){
printf(\"\\n
... stop user from entering a negative value ...
is not possible. Users enter all sorts of gibberish. Instead, read a line of user input and parse it for correctness. Use fgets()
for input, then sscanf()
, strtol()
, etc. for parsing.
// return -1 on EOF
int GetPositiveNumber(const char *prompt, const char *reprompt) {
char buf[100];
fputs(prompt, stdout);
fflush(stdout);
while (fgets(buf, sizeof buf, stdin)) [
int value;
if (sscanf(buf, "%d", &value) == 1 && value > 0) {
return value;
}
fputs(reprompt, stdout);
fflush(stdout);
}
return -1;
}
// Usage
int TktAdult = GetPositiveNumber(
"\nEnter amount of adult tickets:" ,
"\nPlease enter a positive number!");
if (TktAdult < 0) Handle_End_of_File();
else Success(TktAdult);