//两个步骤,第一步读取文件,并且初始化索引结构体,把初始化的索引结构体写入到文件,第二步,读取这个文件到索引结构体
//并对这个结构体进行快速排序,得到顺序的索引,再写入文件
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h> char path[] = "QQ.txt";
char indexpath[] = "QQindex8848.txt";
char sortindexpath[] = "QQsortindex8848.txt"; #define allN 84331072 struct INDEX
{
//QQ号
long long QQ;
//索引
int index;
};
//简化索引
typedef struct INDEX Index; //从字符串获取qq号,存放在tmp中,并在tmp中提取QQ号
void getQQ(char *str, char *tmp)
{
strcpy(tmp, str);
char *p = tmp;
while (*p)
{
if (*p == '-')
{
*p = '\0';
break;
}
p++;
}
} //每一行读取到索引
void main1()
{
FILE *pfr = fopen(path, "r");
FILE *pfw = fopen(indexpath, "wb"); while (!feof(pfr))
{
//获取当前文件指针距离开头的位置,在读取之前读取,读取的是每一行开头的位置
int index = ftell(pfr); char str[] = { };
//读取
fgets(str, , pfr);
char tmp[] = { };
//获取QQ到tmp
getQQ(str, tmp);
//把QQ转换成long long类型
long long lltmp = atoll(tmp);
if (lltmp==)
{
continue;
}
Index in1 = { };
in1.QQ = lltmp;
in1.index = index;
//把索引结构体写入
fwrite(&in1, sizeof(in1), , pfw);
} fclose(pfr);
fclose(pfw);
printf("索引OK");
system("pause");
} //比较两个结构体
int com(void *p1, void *p2)
{
Index *pl1 = p1;
Index *pl2 = p2;
if (pl1->QQ >pl2->QQ)
{
return ;
}
else if (pl1->QQ <pl2->QQ)
{
return -;
}
else
{
return ;
} } //读取到结构体
void main()
{
FILE *pfr = fopen(indexpath, "rb");
FILE *pfw = fopen(sortindexpath, "wb");
//分配这么多个索引结构体(包括qq号和位置),并读取
Index *p = malloc(allN*sizeof(Index));
fread(p, sizeof(Index), allN, pfr); //对读取的结构体进行排序
qsort(p, sizeof(Index), allN,com ); //写入
fwrite(p, sizeof(Index), allN, pfw); //关闭文件
fclose(pfr);
fclose(pfw); system("pause");
}

68.qq号索引结构体写入内存,并实现快速排序的更多相关文章

  1. 结构体,内存,指针例题.DOC

    2015.1.30 递归函数:1.自身调用自己:2.要有结束条件!typedef 后面加分号:一般后面的重定义名加_,例如:typedef unsigned long int uint_16;结构体成 ...

  2. C语言 结构体的内存对齐问题与位域

    http://blog.csdn.net/xing_hao/article/details/6678048 一.内存对齐 许多计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地 ...

  3. C语言结构体占用空间内存大小解析

    结构体的数据类型的有点我们就不啰嗦了,直接来看相同数据结构体的几种书写的格式吧. 格式一: 01.struct tagPhone 02.{ 03.     char   A; 04.     int  ...

  4. C语言结构体的内存对齐问题

    在C语言开发当中会遇到这样的情况: #include <stdio.h> struct test { int a; char b; }; int main(int argc, const ...

  5. C语言结构体在内存中的存储情况探究------内存对齐

    条件(先看一下各个基本类型都占几个字节): void size_(){ printf("char类型:%d\n", sizeof(char)); printf("int类 ...

  6. VC中结构体的内存布局

    看了 VC++中内存对齐 这篇文章,感觉说复杂了,根据我的总结,要算出结构体的内存大小和偏移量,只要清楚结构体各成员的内存布局就行了,下面介绍一下我总结的规则,有不对之处,欢迎回复. 1.实际PACK ...

  7. 36深入理解C指针之---结构体的内存处理

    一.有关结构体的内存处理包括,结构体指针和结构体成员指针的内存分配.结构体成员的数据对齐.结构体的内存释放 1.定义:与自定义数据类型(结构体)有关的内存分配.大小和释放问题 2.特征: 1).用内存 ...

  8. 3.c语言结构体成员内存对齐详解

    一.关键一点 最关键的一点:结构体在内存中是一个矩形,而不是一个不规则形状 二.编程实战 #include <stdlib.h> #include <stdio.h> stru ...

  9. 实验:使用GDB查看结构体在内存中的存储方式

    结构体在内存中的表示形式是怎么样的? 结构体在内存中和普通变量存储没有太大的区别. 首先我们看看,计算机如何读取普通变量:   普通变量例如int是占据4个字节,计算机读内存的时候会从起始地址开始读, ...

随机推荐

  1. mysql中lock tables与unlock tables(锁表/解锁)使用总结

    php mysql lock tables 使用有感 mysql 的 表锁 lock tables 感觉就像一个 封闭的空间 mysql发现 lock tables 命令的时候,会将带有锁标记的表(t ...

  2. ArcGIS api for javascript——渲染-计算相等间隔分级

    描述 本例展示了如何配置分级渲染使用一个相等间隔分类.在这个分类类型中,断点被设置为相等的距离. 可以手工添加相等距离的断点:然而,如果数据被修改了,那些断点就会是不合理的.本例自动地计算断点,因此相 ...

  3. ArcGIS api for javascript——合并两个ArcGIS Online服务

    描述 这个示例创建一个地图并ArcGIS Online增加连个图层到地图.ArcGIS Online是由ESRI体提供的一组切片地图服务,可以用来通过高质量的地图和数据增强应用.这个示例增加影像和运输 ...

  4. 怎样使Dialog像Activity一样随心所欲的使用?

    怎样使Dialog像Activity一样随心所欲的使用? android中的Dialog像是寄生在Activity中.在弹出Dialog时.因受到系统风格定义,导致Dialog怎么也不能如意,那么今天 ...

  5. vue29-vue2.0组件通信_recv

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Microsoft office2016(专业增强版) 安装错误,报CRT(KB2999226)

    对着这个错误的出现,网上有解释,这里不多说(实际是我没有找到比较靠谱的说法..),跟Window Update这个服务有关. 首先打开”Windows人为管理器”->"服务" ...

  7. Node书签

    1.开源项目 [译]过去一年25个惊人的开源Node.js项目(2018版) 百度网盘下载助手

  8. cors跨域的前端实现---根据资料整合的

    1.服务端 搁response中增加Access-Control-Allow-Origin:‘*’ eg:  context.Response.AddHeader("Access-Contr ...

  9. 【使用uWSGI和Nginx来设置Django和你的Web服务器】

    目录 安装使用uWSGI 配置Nginx结合uWSGI supervisor Django静态文件与Nginx配置 @ *** 所谓WSGI . WSGI是Web服务器网关接口,它是一个规范,描述了W ...

  10. HRBUST 1376 能量项链

    能量项链 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HRBUST. Original ID: 13 ...