簡體   English   中英

將輸入限制為4位數輸入(0-9)

[英]Restrict input to 4 digit entry (0-9)

程序設計課的作業2

第1部分:

  • 提示用戶輸入8位數的帳號(0-9),重復進行直到有效。

第2部分:

  • 提示用戶設置4位數字的針號(0-9),重復進行直到有效。
  • 提示用戶驗證引腳號,如果無效,請返回第2部分。

該程序有效,但是,我想驗證一些其他事項:

  1. 接受前導零,例如“ 00123456”
  2. 拒絕其他字母,例如'12345678a'
  3. 拒絕其他“單詞”,例如“ 12345678 123abc”

我在想,提示輸入字符串,檢查它的長度(4或8),如果它通過了該測試,則將其轉換為整數並繼續進行測試。

有什么想法嗎?

[我知道很多人不喜歡使用scanf 我對如何對程序進行最小的更改而不是重新發明[wheel]更感興趣! :)]

#include <stdio.h>

int main()
{

    int return_val = 0;         
    int account_number = 0;
    int pin_number = 0;
    int pin_number_verify = 0;
    int valid_pin = 0;


    // Account # Validation
    while(1)
    {
        printf ("Please enter your 8 digit account number:\n");
        return_val = scanf("%d", &account_number);

        if((account_number > 9999999) && (account_number < 99999999))
        {
            if (return_val == 1)
            {
                break;
            }
        }

        printf("Invalid account number. Account number must be 8 digits.\n\n");

        while (getchar() != '\n');  /* Clear keyboard input buffer */
    }

    return_val = 0;


    // Pin # Validation
    while(1)        
    {
        printf ("\nPlease choose a 4 digit pin number:\n");
        return_val = scanf("%d", &pin_number);

        while (getchar() != '\n');  /* Clear keyboard input buffer */

        if((pin_number > 999) && (pin_number < 9999))
        {
            if (return_val == 1)
            {
                while(1)
                {
                    printf("Re-enter pin number:\n");
                    return_val = scanf("%d", &pin_number_verify);
                    while (getchar() != '\n');  /* Clear keyboard input buffer */

                    if(pin_number != pin_number_verify)
                    {
                        printf("Pin setup unsuccessful\n\n");
                        break;
                    }
                    else
                    {
                        valid_pin = 1;
                        break;
                    }
                }
            }
        }

        if (valid_pin == 1) {
            break;
        }

        printf("Invalid pin number. Pin number must be 4 digits.\n");

        while (getchar() != '\n');  /* Clear keyboard input buffer */
    }


    // Successful account setup prompt
    printf("\nPin setup successful!\n");
    printf("Account #: %d\n", account_number);
    printf("Pin #: %d\n", pin_number);
    printf("Have a nice day.\n");

    return 0;
}

我通過擁有一個char數組來完成了類似的方法,然后使用了一個接受正確數量的數字(可以包括字母或特殊符號)的函數,並使用了一個驗證函數來驗證輸入的所有一系列數字以通過驗證。 一切取決於要求!

您還可以使用一個函數,該函數讀取正確數量的所有數字並將每個數字保存到char數組中並遞增一個指針,如果在鍵入時收到任何無效輸入,則可以忽略它並保持輸入最多為忽略直到爆發的時間,否則返回錯誤。

畢竟我認為您應該使用char數組,因為0001仍然是有效的密碼。

如果要檢查輸入的字符數是否正確,請閱讀輸入內容並檢查長度。 然后,您可以檢查內容的有效性(所有數字)。

您可以使用isalpha()檢查是否存在任何字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM