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

C語言模擬三次密碼驗證:基礎輸入輸出與字符串比較實戰

     編輯:關於C語言

C語言實現三次密碼嘗試限制:基礎交互邏輯實戰

模擬登錄系統核心邏輯:預設密碼、三次嘗試、成功跳出、失敗鎖定,展示 scanf、strcmp、循環控制的綜合應用。

完整代碼


#include 
#include 

int main() {
    char password[] = "123456";  // 預設密碼
    char input[10];
    int i;

    for (i = 0; i < 3; i++) {
        printf("please input the passwd:> ");
        scanf("%s", input);  // 注意:不需 &input
        
        if (strcmp(password, input) == 0) {
            printf("login success!\n");
            break;
        } else {
            printf("passwd error, try again\n");
        }
    }

    if (i == 3) {
        printf("attempts exceeded, exiting...\n");
        return 0;
    }
    
    // 登錄成功後續業務邏輯...
    system("pause");  // Windows 專用,Linux 用 getchar()
    return 0;
}

關鍵點解析

  1. 字符串比較:strcmp(s1, s2) == 0 表示相等,切勿用 == 比較數組名
  2. scanf 陷阱:%s 遇空格停止,密碼含特殊字符需用 fgets
  3. 緩衝區溢出風險:scanf("%s", input) 無長度限制,生產環境用 scanf("%9s", input) 或 fgets
  4. 循環控制:break 跳出循環,i == 3 判斷是否耗盡機會

安全性增強建議

  • 密碼不應明文硬編碼,應存儲哈希值
  • 輸入時回顯掩碼(*),需平台相關 API(getch/termios)
  • 失敗延遲防暴力破解
  • 記錄審計日誌

教學價值

此例雖簡單,但涵蓋:

  • 字符數組與字符串處理
  • 標準庫函數調用
  • 流程控制(循環/分支/跳轉)
  • 用戶交互基礎模式

是 C 語言入門項目的優秀實踐案例。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved