72.挖掘CSDN密碼到鏈表並統計密碼出現次數生成密碼庫
阿新 • • 發佈:2018-02-19
sca ret open word pac 要求 i++ 密碼 tsp
- list.h
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 6 //創建密碼結點 7 typedef struct passinfo 8 { 9 //密碼 10 char password[20]; 11 //出現次數 12 int ci; 13 //下一個節點 14 struct passinfo *pNext; 15 }INFO, *PINFO;
- list.c
1
- main.c
1 #include "list.h" 2 #include <Windows.h> 3 PINFO phead = NULL; 4 5 //是否滿足格式要求 賬號 # 密碼 # 郵箱 6 int isoktosscanf(char *str) 7 { 8 //判斷是否存在# 9 char *p = strstr(str, "#"); 10 if (p!=NULL) 11 { 12 //繼續判斷是否存在第二個# 13 if (strstr(p+1,"#")!=NULL) 14 { 15 return 1; 16 } 17 else 18 { 19 return 0; 20 } 21 } 22 else 23 { 24 return 0; 25 } 26 } 27 28 //消除空格 29 void eatspace(char *str) 30 { 31 //當前位置 32 int i = 0; 33 //遊標 34 int j = 0; 35 //雙指針錯位 36 while ((str[i]=str[j++])!=‘\0‘) 37 { 38 if (str[i]!=‘ ‘) 39 { 40 i++; 41 } 42 } 43 } 44 45 //文件載入 46 void fileload() 47 { 48 //打開文件 49 FILE *pf = fopen("csdn.txt", "r"); 50 51 //如果沒有到文件末尾 52 while (!feof(pf)) 53 { 54 char str[100] = { 0 }; 55 char password[100] = { 0 }; 56 //從文件中獲取一行 57 fgets(str, 100, pf); 58 //找到第一個#的位置 59 char*p1 = strstr(str, "#"); 60 //找到第二個#的位置 61 char*p2 = strstr(p1+1, "#"); 62 //分別設置成‘\0‘ 63 *p1 = ‘\0‘; 64 *p2 = ‘\0‘; 65 //拷貝字符串 66 strcpy(password, p1 + 1); 67 //消除空格 68 eatspace(password); 69 //判斷是否在鏈表中 70 if (isin(phead, password) == 0) 71 { 72 //添加到頭結點 73 phead = addback(phead, password); 74 } 75 } 76 fclose(pf); 77 78 //按密碼次數排序 79 sortbyci(phead); 80 //寫入到文件 81 writetofile(phead, "C:\\ci.txt"); 82 //按照密碼相似度排序 83 sortbypass(phead); 84 //寫入到文件 85 writetofile(phead, "C:\\pass.txt"); 86 } 87 88 //main函數 89 void main4() 90 { 91 fileload(); 92 system("pause"); 93 }
72.挖掘CSDN密碼到鏈表並統計密碼出現次數生成密碼庫