首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言模擬密碼登入:三次錯誤鎖定實作

     編輯:關於C語言

功能需求

  • 預設密碼 "123456"。
  • 使用者最多嘗試 3 次。
  • 成功顯示「登入成功」,失敗 3 次顯示「三次輸入有誤」並退出。

完整程式碼

#include 
#include 
#include 

int main() {
    int i = 0;
    char input[10];
    char *passwd = "123456";

    for (i = 1; i <= 3; i++) {          // 修正:原碼 1<3 恆真導致無限迴圈
        printf("請輸入密碼> ");
        scanf("%s", input);             // 修正:input 本身是陣列名即地址,無需 &
        if (strcmp(passwd, input) == 0) {
            break;
        } else {
            printf("密碼輸入錯誤\n");
            if (i == 3) {
                printf("三次輸入有誤!\n");
                exit(0);
            }
        }
    }
    printf("登入成功!\n");
    return 0;
}

關鍵修正說明

  1. 迴圈條件:原碼 for(i=1; 1<3; i++) 中 1<3 恆為真,導致無限迴圈。已修正為 i <= 3。
  2. scanf 參數:input 為 char[10],陣列名轉型為指標,scanf("%s", input) 即可,原碼誤加 &。
  3. 字串比較:strcmp 回傳 0 代表相等,邏輯正確。

安全性補充

  • scanf("%s") 不限制長度,易造成緩衝區溢位。建議用 scanf("%9s", input) 或 fgets。
  • 實際專案應使用雜湊比對,不可明文儲存密碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved