限制用户输入8位数字 [英] Restrict user input to 8 digit number
问题描述
我期待有一个用户输入一个8位数的帐号。在code我似乎一切工作,除非你有多个字母,即:BBB为输入。如果出现这种情况,它运行while循环3次,显示printf的,但不能要求另一个输入。
如何解决这个问题,任何输入或更好的方式来做到这一点是值得欢迎的!
现在,我使用的:
的#include<&stdio.h中GT;诠释的main()
{
INT RETURN_VAL = 0;
INT ACCOUNT_NUMBER = 0;
INT within_range = 0;的printf(请输入您的8位帐号:\\ n);
RETURN_VAL = scanf函数(%d个,&安培; ACCOUNT_NUMBER);
的getchar();
的getchar();如果((ACCOUNT_NUMBER> 9999999)及及(ACCOUNT_NUMBER&下; 99999999))
{
within_range = 1;
}而((RETURN_VAL!= 1)||(within_range!= 1))
{
的printf(无效的账户号码账户数必须是8位\\ n);
的printf(请输入您的8位帐号:\\ n);
// scanf函数(%d个,&安培;明确);
RETURN_VAL = scanf函数(%d个,&安培; ACCOUNT_NUMBER);
的getchar();
的getchar(); 如果((ACCOUNT_NUMBER> 9999999)及及(ACCOUNT_NUMBER&下; 99999999))
{
within_range = 1;
}
}的printf(帐号数:%d,ACCOUNT_NUMBER);
}
它会帮助,如果你读取输入的字符的字符串(使用与fgets
),并对其进行解析从那里使用的sscanf
?你将不必担心额外的的getchar
秒。
的#include<&stdio.h中GT;INT get_acct_num()
{
焦线[80];
INT acct_num;
INT RETURN_VAL = 0;
的printf(请输入您的8位帐号:\\ n);
与fgets(行,sizeof的(线),标准输入);
RETURN_VAL = sscanf的(行,%D,&安培; acct_num);
如果(RETURN_VAL!= 1)
返回(0);
如果((acct_num< 10000000)||(acct_num> 99999999))
返回(0); 返回(acct_num);
}诠释的main()
{
INT ACCOUNT_NUMBER = 0;
而(!(ACCOUNT_NUMBER = get_acct_num()))
的printf(无效的账户号码账户数必须是8位\\ n);
的printf(帐号数:%d,ACCOUNT_NUMBER);
}
I am looking to have a user enter an 8 digit account number. The code I have seems to work for everything unless you have multiple letters, i.e.: 'bbb' as an input. If that happens, it runs the while loop 3 times, displaying the printf, but not asking for another input.
Any input on how to fix this, or a better way to do it is welcome!
Right now, I'm using:
#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);
}
Will it help if you read the input as a string of characters (using fgets
) and parse it from there using sscanf
? You will not have to worry about the extra getchar
s.
#include <stdio.h>
int get_acct_num()
{
char line[80];
int acct_num;
int return_val = 0;
printf("Please enter your 8 digit account number:\n");
fgets ( line, sizeof ( line ), stdin );
return_val = sscanf(line, "%d", &acct_num);
if ( return_val != 1 )
return ( 0 );
if ( ( acct_num < 10000000 ) || ( acct_num > 99999999 ) )
return ( 0 );
return ( acct_num );
}
int main()
{
int account_number = 0;
while ( ! ( account_number = get_acct_num() ) )
printf("Invalid account number. Account number must be 8 digits.\n");
printf("Account #: %d", account_number);
}
这篇关于限制用户输入8位数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!