【发布时间】:2013-05-31 02:20:03
【问题描述】:
我希望用户输入一个 8 位数的帐号。除非您有多个字母,否则我的代码似乎适用于所有内容,即:“bbb”作为输入。如果发生这种情况,它会运行 3 次 while 循环,显示 printf,但不要求其他输入。
欢迎任何有关如何解决此问题或更好的解决方法的意见!
现在,我正在使用:
#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);
}
【问题讨论】:
-
你应该把它读成一个字符串,然后验证它的长度和数字内容,最后转换成一个整数。
标签: c validation int