1. 程式人生 > >常用功能函數-密碼登陸函數

常用功能函數-密碼登陸函數

cond http printf span 初始化 word 技術分享 != 符號表

密碼登陸-功能函數

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h> //包含getch(); 從控制臺讀取一個字符,但不顯示在屏幕上

#pragma warning(disable:4996) //IDE默認禁止這種容易產生漏洞的舊函數,例如fopen(),現在需要使用fopen_s,要想使用舊函數,要加上這句

//檢查是否是第一次進入系統
int checkFirst()
{
    int i;
    
char pwd_first[9]; //新系統,第一次輸入的密碼數組 char pwd_second[9]; //新系統,第二次輸入的密碼數組 char password_input[9]; //正式輸入的密碼數組 char password[9]; //正式輸入的密碼數組 FILE *fp_read,*fp_write; fp_read = fopen("password.dat", "rb"); if(!fp_read) //如果不存在password.dat,則進入if { printf("\n新系統,請輸入相應的初始化操作!\n"
); //getchar(); do { printf("\n設置密碼,請不要超過8位:"); //getch() - 從控制臺讀取一個字符,但不顯示在屏幕上 //CR用符號‘\r‘表示, 十進制ASCII代碼是13, 十六進制代碼為0x0D; //LF使用‘\n‘符號表示, ASCII代碼是10, 十六制為0x0A. for (i = 0; i < 8 && (pwd_first[i] = getch()) != \r
;i++) { putchar(*); } pwd_first[i] = \0; //不加‘\0‘,只是字符數組,不能使用strcmp進行比較 printf("\n請再次設置密碼,請不要超過8位:"); for (i = 0; i < 8 && (pwd_second[i] = getch()) != \r; i++) { putchar(*); } pwd_second[i] = \0; if ( strcmp(pwd_first,pwd_second) == 0 ) { printf("\n密碼輸入成功! \n"); break; //跳出循環 } else { printf("\n2次密碼不一致,請重新輸入!\n"); system("PAUSE"); //暫停 system("CLS"); //清屏 } } while (1); //fclose(fp_read); //error,不能先關閉,否則後面打開password.dat會失敗 //將密碼寫入到密碼文件中 fp_write = fopen("password.dat", "wb"); if (!fp_write) { printf("\n密碼文件打開失敗,則系統創建失敗!\n"); return -1; } i = 0; while (pwd_first[i]) { putw(pwd_first[i], fp_write); //putw為寫入單個字符的函數 i++; } fclose(fp_write); printf("\n系統初始化成功,按任意鍵退出後,再重新進入!\n"); exit(0); } else { i = 0; while ( !feof(fp_read) && i<8 ) //判斷是否讀完密碼文件 { pwd_first[i] = getw(fp_read); //從文件流中讀出字符賦值給pwd_first數組 i++; } pwd_first[i-1] = \0; //使用feof()讀取文件內容,總是會多讀取一次,假如字符個數為3,則會讀取4次,i==4,所以i要減1 int n = 0; do { printf("\n請輸入密碼,請不要超過8位:"); for (i = 0; i < 8 && (password[i] = getch()) != \r; i++) { putchar(*); } password[i] = \0; if (strcmp(password, pwd_first) != 0) { printf("\n密碼錯誤,請重新輸入!\n"); n++; system("PAUSE"); //暫停 system("CLS"); //清屏 } else { system("CLS"); //清屏 printf("密碼正確!\n"); system("PAUSE"); //暫停 system("CLS"); //清屏 break; //密碼正確,退出函數,繼續向下執行 } } while(n<3); if(n >= 3) { printf("請退出,你已經輸入三次錯誤密碼!\n"); exit(1); } } return 0; } int _tmain(int argc, _TCHAR* argv[]) { checkFirst(); //檢查是否是第一次進入系統 printf("\n成功進入系統!\n"); return 0; }

第一次進入新系統:

技術分享圖片

第二次進入系統,輸入密碼,密碼正確:

技術分享圖片

常用功能函數-密碼登陸函數