• 密码库生成


    csdn.txt中的数据是这样的:

    1.main.c

    #include "list.h"

    int isoktosscanf(char *str) { char *p = strstr(str, "#"); if (p!=NULL) { if (strstr(p+1,"#")!=NULL) { return 1; } else { return 0; } } else { return 0; } } void eatspace(char *str) { int i = 0; int j = 0; while ((str[i]=str[j++])!='')//双指针错位 { if (str[i]!=' ') { i++; } } } void fileload() { FILE *pf = fopen("Z:\I\尹成清华终极版C语言视频源码文档20150131\大数据相关数据\csdn.txt", "r"); while (!feof(pf)) { char str[100] = { 0 }; char password[100] = { 0 }; fgets(str, 100, pf); char*p1 = strstr(str, "#"); char*p2 = strstr(p1+1, "#"); *p1 = ''; *p2 = ''; strcpy(password, p1 + 1);//拷贝字符串 eatspace(password); if (isin(phead, password) == 0) { phead = addback(phead, password); } } fclose(pf); sortbyci(phead); writetofile(phead, "C:\ci.txt"); sortbypass(phead); writetofile(phead, "C:\pass.txt"); } void main() { fileload(); system("pause"); } void main1() { PINFO phead = NULL; char *str[10] = { "123", "1234", "456", "789", "2345", "123", "456", "789", "1234", "123" }; for (int i = 0; i < 10;i++) { if (isin(phead,str[i])==0) { phead=addback(phead, str[i]); } } show(phead); sortbyci(phead); printf(" "); show(phead); sortbypass(phead); printf(" "); show(phead); writetofile(phead, "C:\x.txt"); system("C:\x.txt"); system("pause"); }

    2.list.h

    #define  _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <Windows.h> PINFO phead = NULL;

    typedef struct passinfo { char password[20]; int ci; struct passinfo *pNext; }INFO ,*PINFO; PINFO addback(PINFO phead, char password[20]);//尾部插入 PINFO sortbyci(PINFO phead);///排序 PINFO sortbypass(PINFO phead); PINFO show(PINFO phead);//显示 int isin(PINFO phead, char password[20]);//判断存在与否 void writetofile(PINFO phead,char path[100]);//写入到文件

    3.list.c

    #include "list.h"
    PINFO addback(PINFO phead, char password[20])//尾部插入
    {
        PINFO pnew = calloc(1, sizeof(INFO));//开辟内存
        strcpy(pnew->password, password);//拷贝密码
        pnew->ci = 1;
        pnew->pNext = NULL;
        if (phead ==NULL)
        {
            phead = pnew;//直接插入
        } 
        else
        {
            pnew->pNext = phead;
            phead = pnew;//头插
    
        }
    
        return phead;
    
    
    
    }
    PINFO sortbyci(PINFO phead)///排序
    {
        for (PINFO p1 = phead; p1 != NULL;p1=p1->pNext)
        {
            for (PINFO p2 = phead; p2 != NULL; p2 = p2->pNext)
            {
                if (p2->pNext!=NULL)
                {
                    if (p2->ci < p2->pNext->ci)
                    {
                        int citemp = p2->ci;//交换数据
                        p2->ci = p2->pNext->ci;
                        p2->pNext->ci = citemp;
    
                        char passtemp[100];
                        strcpy(passtemp, p2->password);
                        strcpy(p2->password, p2->pNext->password);
                        strcpy(p2->pNext->password, passtemp);
    
                    }
                }
                
            }
    
    
        }
    
    
    
    
    
    
    }
    PINFO sortbypass(PINFO phead)
    {
        for (PINFO p1 = phead; p1 != NULL; p1 = p1->pNext)
        {
            for (PINFO p2 = phead; p2 != NULL; p2 = p2->pNext)
            {
                if (p2->pNext != NULL)
                {
                    if (strcmp(p2->password, p2->pNext->password) < 0)
                    {
                        int citemp = p2->ci;//交换数据
                        p2->ci = p2->pNext->ci;
                        p2->pNext->ci = citemp;
    
                        char passtemp[100];
                        strcpy(passtemp, p2->password);
                        strcpy(p2->password, p2->pNext->password);
                        strcpy(p2->pNext->password, passtemp);
    
                    }
                }
                
            }
    
    
        }
    
    }
    PINFO show(PINFO phead)//显示
    {
        if (phead==NULL)
        {
            return;
        } 
        else
        {
            printf("%s,%d
    ", phead->password, phead->ci);
            show(phead->pNext);
        }
        return phead;
    
    }
    int isin(PINFO phead, char password[20])//判断存在与否
    {
        PINFO p = phead;
        while (p!=NULL)
        {
            if (strcmp(p->password,password)==0)
            {
                p->ci += 1;
                return 1;//存在
            }
            p = p->pNext;
        }
    
        return 0;//不在链表内部
    
    
    }
    void writetofile(PINFO phead, char path[100])//写入到文件
    {
    
        FILE *pf = fopen(path, "w");
        PINFO p = phead;
        while (p != NULL)
        {
            fprintf(pf, "%s %d
    ", p->password, p->ci);//打印到文件
            p = p->pNext;
        }
        fclose(pf);
    
    
    }
  • 相关阅读:
    nyoj 329 循环小数【KMP】【求最小循环节长度+循环次数+循环体】
    转 :hdoj 4857 逃生【反向拓扑】
    hdoj 3342 Legal or Not【拓扑排序】
    hdoj 2094 产生冠军
    poj 1789 Truck History【最小生成树prime】
    转:【拓扑排序详解】+【模板】
    hdoj 1285 确定比赛名次【拓扑排序】
    poj 2031 Building a Space Station【最小生成树prime】【模板题】
    zzuoj 10408: C.最少换乘【最短路dijkstra】
    [LC] 232. Implement Queue using Stacks
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5893067.html
Copyright © 2020-2023  润新知