49.大量qq号及qq密码挖掘到结构体并实现精确分配内存以及快速排序
原数据:

处理后的数据:

完整代码:
//思路;
//数据清洗(把空格替换成'\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密码挖掘到结构体并实现精确分配内存以及快速排序的更多相关文章
- 啊哈算法之巧用队列解密QQ号
简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第一节的题目——使用队列来解密举例中按照规则加密的QQ号.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,意在深 ...
- 68.qq号索引结构体写入内存,并实现快速排序
//两个步骤,第一步读取文件,并且初始化索引结构体,把初始化的索引结构体写入到文件,第二步,读取这个文件到索引结构体 //并对这个结构体进行快速排序,得到顺序的索引,再写入文件 #define _CR ...
- 今天竟然有人模仿我的QQ号进行骗钱
今天下午,CoderGeek同学告诉我,有个叫"小雷FansUnion"的QQ正在找他要钱,他直接和我这个正宗的"小雷FansUnion"探听虚实.这时才发现, ...
- C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号、密码)
原文:C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号.密码) 目录: 1,界面设计 2,数据模型的建立与数据绑定 3,添加QQ数据 4,修改QQ数据 5,删除QQ数据 6,密码选 ...
- (转)最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配. 通常用于格式验证.正则替换.查找子串等 各种编程语言的正则表达式基本相同 ...
- 【转】如何保护自己的QQ号
账号丢失的原因 账号被注销 长时间未登陆 如果你的QQ号是普通号码,在连续三个月不登陆的情况下,腾讯公司会自动收回你的账号,也就意味着这个QQ号码从此再也不属于你了,会员号码是不会被收回的,要想不被收 ...
- web安全:QQ号快速登录漏洞及被盗原理
为什么你什么都没干,但QQ空间中却发了很多小广告?也许你的QQ账号已经被盗.本文将讲解一个QQ的快速登录的漏洞. 我前阵子在论坛上看到一个QQ的快速登录的漏洞,觉得非常不错,所以把部分原文给转到园子来 ...
- [转帖]web安全:QQ号快速登录漏洞及被盗原理
web安全:QQ号快速登录漏洞及被盗原理 https://www.cnblogs.com/1996V/p/7481823.html 看了下 QQ的确监听 端口 大神牛B 自己这一块一直没深入学习过.. ...
- QQ号快速登录漏洞及被盗原理
web安全:QQ号快速登录漏洞及被盗原理 为什么你什么都没干,但QQ空间中却发了很多小广告?也许你的QQ账号已经被盗.本文将讲解一个QQ的快速登录的漏洞. 我前阵子在论坛上看到一个QQ的快速登录的 ...
随机推荐
- Hadoop框架基础(一)
** Hadoop框架基础(一) 学习一个新的东西,传统而言呢,总喜欢漫无目的的扯来扯去,比如扯扯发展史,扯扯作者是谁,而我认为这些东西对于刚开始接触,并以开发为目的学者是没有什么帮助的,反而 ...
- <Sicily>Huffman coding
一.题目描述 In computer science and information theory, a Huffman code is an optimal prefix code algorith ...
- python 中的property
""" property() 的第一个参数是 getter 方法,第二个参数是 setter 方法 xx = property(a,b) @property #用于指示g ...
- Ehcache学习总结(3)--Ehcache 整合Spring 使用页面、对象缓存
Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布式 ...
- UITextField监控文字变化方法
项目里须要在不隐藏键盘的情况下.来更改button 的状态. 这里就是要对uitextfield监控.uitextfield继承于UIControl.所以能够 使用addTarget方法.详细例如以下 ...
- 网易2016研发project师笔试题
网易2016研发project师笔试题 2015/12/9 11:25(网上收集整理的,參考答案在后面,若有错误请大神指出) 1. 运行指令find / -name "test.c" ...
- json数据转化成实体 存到数据库.
直接看步骤吧 1.一般我们会调用别人给的webservice获取一个字符串数据.如果为String data="xxxxxxxxxx"; 这个data事实上就是样例Enterpr ...
- 数据库阿里连接池 Druid配置详解以及web监控统计
java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色的性能,也 ...
- 123.static静态函数和函数模板
#include <iostream> using namespace std; //static成员,每个类型都会实例化,创建一个变量,类型一致则共享,否则不共享 template &l ...
- POJ - 3842 An Industrial Spy dfs(水)
题意:给你一串数字,最少一个,最多七个,问用这里面的数字能组成多少素数,不重复. 思路:之前还遍历10000000的每一个素数,结果超时,后来发现直接dfs就可以了,只是标记一下做过的数. #prag ...