68.qq号索引结构体写入内存,并实现快速排序
生活随笔
收集整理的這篇文章主要介紹了
68.qq号索引结构体写入内存,并实现快速排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 //兩個步驟,第一步讀取文件,并且初始化索引結構體,把初始化的索引結構體寫入到文件,第二步,讀取這個文件到索引結構體
2 //并對這個結構體進行快速排序,得到順序的索引,再寫入文件
3 #define _CRT_SECURE_NO_WARNINGS
4 #include<stdio.h>
5 #include<stdlib.h>
6
7 char path[256] = "QQ.txt";
8 char indexpath[256] = "QQindex8848.txt";
9 char sortindexpath[256] = "QQsortindex8848.txt";
10
11 #define allN 84331072
12
13 struct INDEX
14 {
15 //QQ號
16 long long QQ;
17 //索引
18 int index;
19 };
20 //簡化索引
21 typedef struct INDEX Index;
22
23 //從字符串獲取qq號,存放在tmp中,并在tmp中提取QQ號
24 void getQQ(char *str, char *tmp)
25 {
26 strcpy(tmp, str);
27 char *p = tmp;
28 while (*p)
29 {
30 if (*p == '-')
31 {
32 *p = '\0';
33 break;
34 }
35 p++;
36 }
37 }
38
39 //每一行讀取到索引
40 void main1()
41 {
42 FILE *pfr = fopen(path, "r");
43 FILE *pfw = fopen(indexpath, "wb");
44
45 while (!feof(pfr))
46 {
47 //獲取當前文件指針距離開頭的位置,在讀取之前讀取,讀取的是每一行開頭的位置
48 int index = ftell(pfr);
49
50 char str[50] = { 0 };
51 //讀取
52 fgets(str, 50, pfr);
53 char tmp[50] = { 0 };
54 //獲取QQ到tmp
55 getQQ(str, tmp);
56 //把QQ轉換成long long類型
57 long long lltmp = atoll(tmp);
58 if (lltmp==0)
59 {
60 continue;
61 }
62 Index in1 = { 0 };
63 in1.QQ = lltmp;
64 in1.index = index;
65 //把索引結構體寫入
66 fwrite(&in1, sizeof(in1), 1, pfw);
67 }
68
69 fclose(pfr);
70 fclose(pfw);
71 printf("索引OK");
72 system("pause");
73 }
74
75 //比較兩個結構體
76 int com(void *p1, void *p2)
77 {
78 Index *pl1 = p1;
79 Index *pl2 = p2;
80 if (pl1->QQ >pl2->QQ)
81 {
82 return 1;
83 }
84 else if (pl1->QQ <pl2->QQ)
85 {
86 return -1;
87 }
88 else
89 {
90 return 0;
91 }
92
93 }
94
95 //讀取到結構體
96 void main()
97 {
98 FILE *pfr = fopen(indexpath, "rb");
99 FILE *pfw = fopen(sortindexpath, "wb");
100 //分配這么多個索引結構體(包括qq號和位置),并讀取
101 Index *p = malloc(allN*sizeof(Index));
102 fread(p, sizeof(Index), allN, pfr);
103
104 //對讀取的結構體進行排序
105 qsort(p, sizeof(Index), allN,com );
106
107 //寫入
108 fwrite(p, sizeof(Index), allN, pfw);
109
110 //關閉文件
111 fclose(pfr);
112 fclose(pfw);
113
114 system("pause");
115 }
?
轉載于:https://www.cnblogs.com/xiaochi/p/8445869.html
總結
以上是生活随笔為你收集整理的68.qq号索引结构体写入内存,并实现快速排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《了不起的盖茨比》----走出绿灯困境
- 下一篇: Rails出现ROLLBACK TO S