原数据:

处理后的数据:

完整代码:

 //思路;
//数据清洗(把空格替换成'\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. sql 的几种常用方法

    第一个项目总结基类:database:主要是定义有关数据库的方法: 1.打开数据库 public static void Open() { ( "server=.\\sqlexpress;d ...

  2. Python常用目录操作(Python2)

    Python获取当前路径   Python查看指定路径下的文件和文件夹 Python修改当前工作目录(在读取文件等时需要) Python添加import路径(有时候为了import自己写的py文件,且 ...

  3. <<大学>>原文

    大学之道,在明明德,在亲民,在止于至善.知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得.物有本末,事有终始,知所先后,则近道矣. 古之欲明明德于天下者,先治其国,欲治其国者,先齐其家:欲 ...

  4. 使用 Beego 搭建 Restful API 项目

    1 环境准备 首先你需要在你的环境安装以下软件: go:编程语言运行环境 git:版本控制工具 beego:go 语言流行的开发框架 bee:beego 配套的快速搭建工具 你喜欢的数据库:这里以 M ...

  5. 常见bug分析

    变量类型不匹配,形参和实参类型不匹配,隐式类型转换,变量类型赋值不匹配, 工具不熟悉,导致逻辑错误,查看代码,测试驱动开发,完整的测试用例,覆盖所有分支, 变量超出范围,对于大的数据要特别注意, 工具 ...

  6. git error: object file .git/objects/b9/e269f50db2a3415cc8ad5ba40b82b9b6a13d45 is empty

    错误现象: 解决方法: 1.  find .git/objects/ -type f -empty | xargs rm 2. git fetch -p 3. git fsck --full

  7. POJ 1152 An Easy Problem! (取模运算性质)

    题目链接:POJ 1152 An Easy Problem! 题意:求一个N进制的数R.保证R能被(N-1)整除时最小的N. 第一反应是暴力.N的大小0到62.发现当中将N进制话成10进制时,数据会溢 ...

  8. BZOJ2016: [Usaco2010 Feb]Chocolate Eating

    [传送门:BZOJ2016] 简要题意: 贝西收到了N 块巧克力,她会在接下来的D 天里吃掉这些巧克力,她想制定一个计划,让她每 天的快乐度都保持在较高的水品上. 在第一天刚开始的时候,贝西的快乐度为 ...

  9. 数据库中的Convert

    https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql Conversion failed ...

  10. 6.C语言迷宫程序界面版

    写迷宫程序首先需要安装图形库easyX 安装地址链接:https://pan.baidu.com/s/1qZwFn3m 密码:ozge 项目截图: //左上角是七点,右下角是终点,蓝色表示的是走过的路 ...