我期待有一個用戶輸入一個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