我期待有一个用户输入一个8位数的帐号。我的代码似乎适用于所有情况,除非您有多个字母,即:'bbb'作为输入。如果发生这种情况,它将运行while循环3次,显示printf,但不要求另一个输入。限制用户输入为8位数字
任何关于如何解决这个问题的建议,或者更好的方法,都是值得的!
现在,我使用的是:
#include <stdio.h>
int main()
{
int return_val = 0;
int account_number = 0;
int within_range = 0;
printf("Please enter your 8 digit account number:\n");
return_val = scanf("%d", &account_number);
getchar();
getchar();
if((account_number > 9999999) && (account_number < 99999999))
{
within_range = 1;
}
while ((return_val != 1) || (within_range != 1))
{
printf("Invalid account number. Account number must be 8 digits.\n");
printf("Please enter your 8 digit account number: \n");
//scanf("%d", &clear);
return_val = scanf("%d", &account_number);
getchar();
getchar();
if((account_number > 9999999) && (account_number < 99999999))
{
within_range = 1;
}
}
printf("Account #: %d", account_number);
}
你或许应该读它作为一个字符串,然后验证其长度和数字内容,那么最终转换为整数。 – jarmod