寻找黑客

Posted fjlinww

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找黑客相关的知识,希望对你有一定的参考价值。

题目链接

程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXREQS 15000
#define SUMLEN 1500

typedef struct Requests
{
    char sender[10]; //sender name, all recivers are the same
    int length;  //the length of each request
}Reqs;
typedef struct Senders
{
    char name[10]; //sender name
    int Newlength;  //the total length of each sender
}Send;

//check if str[] is in the send[], if yes return its procession, if no return -1
int IsRepeat(char str[], Send send[])
{
    int i = 0;
    int index = -1;
    for(i=0; i<MAXREQS; i++)
    {
        if (strcmp(str, send[i].name) == 0)
        {
            index = i;
            break;
        }
    }
    return index;
}

int main(int argc, char *argv[])
{
    FILE *fp1,*fp2;
    Reqs reqs[MAXREQS] = {{},{},{},{},{},{},{},{}}; //max num we can process is MAXREQS
    Send send[MAXREQS] = {{},{},{},{},{},{},{},{}};
    int i=0,j=0,index=0,HackNum=0; 

    if(argc == 1){
        printf("error, have not entered file name\\n");
        exit(0);
    }
    else if(argc > 1)
    {
        if((fp1=fopen(argv[1],"r")) == NULL){
            printf("error, cannot open %s\\n",argv[1]);
            exit(0);
        }
        if(argc == 2)
            fp2 = stdout;
        else
            fp2=fopen(argv[2],"w");
    }

    i=0;j=0;
    while(fscanf(fp1,"%s%*s%d",reqs[i].sender,&reqs[i].length) != EOF)
    {
        index = IsRepeat(reqs[i].sender, send);
        if (index == -1)
        {
            strcpy(send[j].name,reqs[i].sender);
            send[j].Newlength = reqs[i].length;         
            j++;
        }
        else
        {
            //update the repeat value
            send[index].Newlength = send[index].Newlength + reqs[i].length;
        }
        i++;
    }
    
    //find the hackers who's length is more than SUMLEN
    for(i=0; i<j; i++)
    {
        if(send[i].Newlength >= SUMLEN)
        {
            HackNum++;
        }
    }
    fprintf(fp2,"%d\\n",HackNum);
    for(i=0; i<j; i++)
    {
        if(send[i].Newlength >= SUMLEN)
        {
            fprintf(fp2,"%s\\n",send[i].name);
        }
    }
    fclose(fp1);
    fclose(fp2);
    return 0;
}

运行结果

技术图片

技术图片

以上是关于寻找黑客的主要内容,如果未能解决你的问题,请参考以下文章

寻找你的黑客偶像

寻找我的黑客偶像

寻找黑客

黑客挑战 - 定位代码中的漏洞

如何扫描网站的静态副本以寻找被黑客入侵的证据

和黑客斗争的 6 天