原数据:

处理后的数据:

完整代码:

 //思路;
//数据清洗(把空格替换成'\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. 《剑指offer》树的子结构

    一.题目描述 输入两颗二叉树A,B,判断B是不是A的子结构. 二.输入描述 输入两棵树A,B. 三.输出描述 判断B是不是A的子结构,是返回true,否则返回false. 四.牛客网提供的框架 /* ...

  2. 《剑指offer》旋转数组的最小数字

    一.题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 二.输入描述 输入一个递增排序的数组的一个旋转 三.输出描述 输出旋转数组的最小元素 例如: 例如数组{3,4,5,1 ...

  3. SQL Server在用户自定义函数(UDF)中使用临时表

    SQL Server在用户自定义函数中UDF使用临时表,这是不允许的. 有时是为了某些特殊的场景, 我们可以这样的实现: CREATE TABLE #temp (id INT) GO INSERT I ...

  4. php--防止DDos攻击代码

    <?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fil ...

  5. The Future Of ReactiveCocoa by Justin Spahr-Summers

    https://www.bilibili.com/video/av9783052?from=search&seid=14165903430339282774

  6. appium使用教程(三)-------------用例编写

    1. 驱动 import os, time, unittest from appium import webdriver PATH = lambda p:os.path.abspath(os.path ...

  7. laravel中soapServer支持wsdl的例子

    最近在对接客户的CRM系统,获取令牌时,要用DES方式加密解密,由于之前没有搞错这种加密方式,经过请教了"百度"和"谷歌"两个老师后,结合了多篇文档内容后,终于 ...

  8. C语言移位

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1;i = i << 2;  //把i里的值左移2位 也就是说,1的2进制是00 ...

  9. 【转】 HtmlAgilityPack使用——XPath注意事项

    [转] HtmlAgilityPack使用——XPath注意事项 在使用HtmlAgilityPack这个开源的类库进行网页内容解析的时候是非常的方便(使用方法见另一篇博客<HTML解析:基于X ...

  10. Xwiki平台Windows搭建(Tomcat7 + XWiki6.2 + MySQL5.5)

    背景介绍 国内xwiki安装使用资料较少,根据自己使用xwiki经验,总结出来,供参考,同时希望感兴趣的朋友能够一起讨论,XWiki是一个强大的Java开源的Wiki引擎. 它支持一些受欢迎的特性如: ...