gpt4 book ai didi

c - 限制用户输入 8 位数字

转载 作者:行者123 更新时间:2023-11-30 15:48:19 25 4
gpt4 key购买 nike

我希望用户输入 8 位数的帐号。我的代码似乎适用于所有内容,除非您有多个字母,即:“bbb”作为输入。如果发生这种情况,它将运行 while 循环 3 次,显示 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);
}

最佳答案

如果您将输入读取为字符串(使用 fgets)并使用 sscanf 从那里解析它会有帮助吗?您不必担心额外的 getchar

#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);
}

关于c - 限制用户输入 8 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com