原数据:

处理后的数据:

完整代码:

 //思路;
//数据清洗(把空格替换成'\0') -> 精确获取每一行(要提前获取source的总长度) -> 获取出每一行再精确分割并把分割后的数据赋给结构体 #define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
#include <string.h> //要被挖掘的数据
char str[] = "569603080----zj123456789 \
----zj123456789 \
----zj1456789 \
----zj123456789 \
----zj123456789 \
----zj1256789 \
----zj145678 \
----zj1234789 \
----zj12366456789 \
----zj12389 \
----zj123789 \
----zj123456789 \
----zj123456789 \
----zj123456789 \
----zj16789 \
----zj123456789 \
----zj1789 \
----zj1256789 \
----zj123456789 \
----zj123456789 \
----zj123456789 \
----zj126789 \
----zj123456789 \
----zj123456789 \
----zj16789 \
----zj123456789 \
----zj123456789 \
----zj12345789 \
----zj12789 \
----zj126789 \
----zj1236789 \
----zj12789 \
----zj123456789 \
----zj1239 \
----zj123456789 \
----zj1289 "; //求出数据长度
int totalLength; //获取有多少行数据
int getlength(char *src)
{
int num = ;
char *pstart = strstr(src, "----"); while (pstart != NULL)
{
num++;
pstart = strstr(pstart+, "----");
}
return num;
} //QQ号结构体
struct QQ
{
long long qqNum;
char *mima;
}; //匿名结构体存储所有QQ
struct
{
struct QQ *data;
int length;
}MyData; //数据清洗,把空格替换成‘\0’
void wash(char *src)
{
while (*src != '\0')
{
if (*src == ' ')
{
*src = '\0';
}
src++;
}
} //初始化结构体
void init()
{
//给匿名结构体分配内存
MyData.data = (struct QQ *)calloc(MyData.length, sizeof(struct QQ)); //MyData.data的下标
int id = ;
//把清洗后的数据从第一位遍历到最后一位
for (char *pstart = str; pstart < str + totalLength; pstart += strlen(pstart)+)
{
//以“-----”寻找,返回寻找到的首地址
char *pwei = strstr(pstart,"----");
//密码所在位置的首地址
pwei += ;
//获取密码长度
int len = strlen(pwei);
//精确分配内存
MyData.data[id].mima = (char *)calloc(len+, sizeof(char)); //以此方法精确拷贝
//sscanf(pstart, "%lld----%s", &MyData.data[id].qqNum,MyData.data[id].mima);
//或者以这种方式copy数据
sscanf(pstart, "%lld",&MyData.data[id].qqNum);
strcpy(MyData.data[id].mima, pwei);
//printf("%lld,%s\n", MyData.data[id].qqNum,MyData.data[id].mima);
id++;
} } void show()
{
for (int i = ; i < MyData.length; i++)
{
printf("qq号:%lld", MyData.data[i].qqNum);
printf(" 密码:%s", MyData.data[i].mima);
printf("\n");
}
} //比较函数
int cmp(const void *p1, const void *p2)
{
//类型转换,把void类型转化成(QQ *),这个类型和qsort传入的首地址类型有关
QQ *ptemp1 = (QQ *)p1;
QQ *ptemp2 = (QQ *)p2;
//大于返回1,等于返回0,小于返回-1
if (ptemp1->qqNum > ptemp2->qqNum)
{
return ;
}
else if (ptemp1->qqNum < ptemp2->qqNum)
{
return -;
}
else
{
return ;
}
} void main()
{
printf("%s\n\n", str); //获取数据长度
MyData.length = getlength(str);
//获取有多少行数据
totalLength = strlen(str);
//数据清洗
wash(str);
//初始化
init();
//调用快速排序
qsort(MyData.data, MyData.length, sizeof(MyData.data[]), cmp);
show();
system("pause");
}

49.大量qq号及qq密码挖掘到结构体并实现精确分配内存以及快速排序的更多相关文章

  1. 啊哈算法之巧用队列解密QQ号

    简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第一节的题目——使用队列来解密举例中按照规则加密的QQ号.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,意在深 ...

  2. 68.qq号索引结构体写入内存,并实现快速排序

    //两个步骤,第一步读取文件,并且初始化索引结构体,把初始化的索引结构体写入到文件,第二步,读取这个文件到索引结构体 //并对这个结构体进行快速排序,得到顺序的索引,再写入文件 #define _CR ...

  3. 今天竟然有人模仿我的QQ号进行骗钱

    今天下午,CoderGeek同学告诉我,有个叫"小雷FansUnion"的QQ正在找他要钱,他直接和我这个正宗的"小雷FansUnion"探听虚实.这时才发现, ...

  4. C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号、密码)

    原文:C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号.密码) 目录: 1,界面设计 2,数据模型的建立与数据绑定 3,添加QQ数据 4,修改QQ数据 5,删除QQ数据 6,密码选 ...

  5. (转)最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等

    什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配. 通常用于格式验证.正则替换.查找子串等 各种编程语言的正则表达式基本相同 ...

  6. 【转】如何保护自己的QQ号

    账号丢失的原因 账号被注销 长时间未登陆 如果你的QQ号是普通号码,在连续三个月不登陆的情况下,腾讯公司会自动收回你的账号,也就意味着这个QQ号码从此再也不属于你了,会员号码是不会被收回的,要想不被收 ...

  7. web安全:QQ号快速登录漏洞及被盗原理

    为什么你什么都没干,但QQ空间中却发了很多小广告?也许你的QQ账号已经被盗.本文将讲解一个QQ的快速登录的漏洞. 我前阵子在论坛上看到一个QQ的快速登录的漏洞,觉得非常不错,所以把部分原文给转到园子来 ...

  8. [转帖]web安全:QQ号快速登录漏洞及被盗原理

    web安全:QQ号快速登录漏洞及被盗原理 https://www.cnblogs.com/1996V/p/7481823.html 看了下 QQ的确监听 端口 大神牛B 自己这一块一直没深入学习过.. ...

  9. QQ号快速登录漏洞及被盗原理

    web安全:QQ号快速登录漏洞及被盗原理   为什么你什么都没干,但QQ空间中却发了很多小广告?也许你的QQ账号已经被盗.本文将讲解一个QQ的快速登录的漏洞. 我前阵子在论坛上看到一个QQ的快速登录的 ...

随机推荐

  1. 【DNN 系列】 模块开发 8.0.1

    1.创建第一个模块需要准备的东西有 https://github.com/dnnsoftware/DNN.Templates/releases/tag/1.0.1 VS 2015 插件 创建一个项目M ...

  2. WebApp之H5登录注册

    代码indexhtml <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  3. 三分钟明白 Activiti工作流 -- java运用_转载

    一. 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑 采用工作 ...

  4. 关于vsphere的 许可证配置问题

    exsi未获得许可情况: exsi的许可证: vcenter server 未获许可: vcenter server的许可证: 写在最后: 无所不能的中国人,百度一下  许可证 就什么多有了,佩服,佩 ...

  5. Tp5 的 validate 自动验证

    tp5自带的验证功能: 用法之一: $validate = new \think\Validate([ ['name', 'require|alphaDash', '用户名不能为空|用户名格式只能是字 ...

  6. 记intel杯比赛中各种bug与debug【其三】:intel chainer的安装与使用

    现在在训练模型,闲着来写一篇 顺着这篇文章,顺利安装上intel chainer 再次感谢 大黄老鼠 intel chainer 使用 头一次使用chainer,本以为又入了一个大坑,实际尝试感觉非常 ...

  7. 用例子看ASP.NET Core Identity是什么?

    原文:用例子看ASP.NET Core Identity是什么? 目录 前言 基于声明的认证(Claims-based Authentication) Claim 在ASP.NET Core Iden ...

  8. django-xadmin定制之列表页searchbar placeholder

    环境:xadmin-for-python3 python3.5.2 django1.9.12 列表页的searchbar如果提供的可搜索字段,都没提示哪个字段可搜索,很不友好,本次定制主要增加inpu ...

  9. 剑指Offer面试题27(Java版):二叉搜索树与双向链表

    题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建新的结点.仅仅能调整树中结点指针的指向. 比方例如以下图中的二叉搜索树.则输出转换之后的排序双向链表为: 在二叉树中,每一 ...

  10. 解决MAC下PHP连接MYSQL错误Warning: mysql_connect(): No such file or directory in conn.php

    今天在mac上用php去连接mysql数据库,出现了 mac PHP Warning:  mysql_connect(): [2002] No such file... 详细例如以下所看到的: Dir ...