这是我的代码的一部分:
printf("\nEnter amount of adult tickets:");
scanf("%d", &TktAdult);
while (TktAdult<0){
printf("\nPlease enter a positive number!");
printf("\nEnter amount of adult tickets:");
scanf("%d", &TktAdult);
}
Run Code Online (Sandbox Code Playgroud)
现在它只能阻止用户输入负值,但是如何添加它以便它也阻止用户输入char?
...阻止用户输入负值...
不可能.用户输入各种乱码.相反,读取一行用户输入并解析它的正确性.使用fgets()输入,然后 sscanf(),strtol()等解析.
// 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);
Run Code Online (Sandbox Code Playgroud)