</pre><pre code_snippet_id="576257" snippet_file_name="blog_20150110_2_9643624" name="code" class="objc">
/**********************************************************************
* 版权所有 (C)2015, Wu Yingqiang
*
* 文件名称: BigData.c
* 文件标识:无
* 内容摘要:用于演示在大数据中查找指定的字符
* 其它说明:无
* 当前版本: V1.0
* 作    者:吴英强
* 完成日期: 20150109
*
* 修改记录1:// 修改历史记录, 包括修改日期、版本号、修改人及修改内容
* 修改日期: 20150109
* 版本号: V1.0
* 修改人: 吴英强
* 修改内容:创建
**********************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include <time.h>char gPath[200] = "E:\\12306数据.txt";
#define  N   119153
char str[100] = { 0 };//要查找的字符串char **gPtr = NULL;//二级指针存储一级指针数组的地址/**********************************************************************
* 功能描述:获取文件有多少行
* 输入参数:无
* 输出参数:无
* 返回值: 行数  -1-失败
* 其它说明:无
* 修改日期          版本号           修改人         修改内容
* --------------------------------------------------------------------------------------
* 20150109           V1.0             Wuyq            创建
***********************************************************************/
int GetLineNum()
{int iFileSize = 0;FILE *pfr = fopen(gPath, "r");if (pfr == NULL){return -1;}else{int i = 0;while (!feof(pfr)){char strbuffer[256] = { 0 };fgets(strbuffer, 256, pfr);//读取一行i++;}iFileSize = ftell(pfr);printf("文件大小为:%f M\n", 1.0*iFileSize/1024/1024);fclose(pfr);//关闭文件return i;}
}/**********************************************************************
* 功能描述:初始化,把文件内容读到内存中
* 输入参数:无
* 输出参数:无
* 返回值: 无
* 其它说明:无
* 修改日期          版本号           修改人         修改内容
* --------------------------------------------------------------------------------------
* 20150109           V1.0             Wuyq            创建
***********************************************************************/
void Init()
{gPtr = (char **)malloc(sizeof(char *)*N);//动态分配一个指针数组memset(gPtr, '\0', sizeof(char *)*N);FILE *pfr = fopen(gPath, "r");if (pfr == NULL){printf("初始化失败\n");return;}else{for (int i = 1; i <= N; i++){char strbuffer[512] = { 0 };fgets(strbuffer, 512, pfr);//读取一行int length = strlen(strbuffer);//求获取长度if (length != 0){gPtr[i] = malloc(sizeof(char)*(length + 1));//每个指针分配内存if (gPtr[i] == NULL){printf("\nfail");}strcpy(gPtr[i], strbuffer);//拷贝字符串//printf("\n%s", gPtr[i]);//打印结果}}fclose(pfr);//关闭文件}
}
/**********************************************************************
* 功能描述:释放内存
* 输入参数:无
* 输出参数:无
* 返回值: 无
* 其它说明:无
* 修改日期          版本号           修改人         修改内容
* --------------------------------------------------------------------------------------
* 20150109           V1.0             Wuyq            创建
***********************************************************************/
void Free()
{for (int i = 1; i <= N; i++){free(gPtr[i]);}
}
/**********************************************************************
* 功能描述:搜索数据
* 输入参数:要搜索的字符串,由用户输入
* 输出参数:无
* 返回值: 无
* 其它说明:无
* 修改日期          版本号           修改人         修改内容
* --------------------------------------------------------------------------------------
* 20150109           V1.0             Wuyq            创建
***********************************************************************/
void Search(char *str)
{for (int i = 1; i <= N; i++){if (gPtr[i] != NULL){char *p = strstr(gPtr[i], str);//查询if (p != NULL){printf("所要查找的字符串, 在第%d行\n", i);//打印结果printf("%s\n", gPtr[i]);}}}
}
/**********************************************************************
* 功能描述:主函数
* 输入参数:无
* 输出参数:无
* 返 回 值:无
* 其他说明:无
* 修改日期        版本号           修改人          修改内容
* ---------------------------------------------------------------------
* 20150109         V1.0             Wuyq            创建
***********************************************************************/
void main()
{printf("文件总共有%d行\n", GetLineNum());Init();printf("已经加载完成\n");  time_t start, end;time(&start);printf("请输入您要查找的数据:\n");scanf("%s", str);Search(str);time(&end);printf("\n一共用时%d S\n", (unsigned int)(end - start));Free();printf("释放内存完成\n");system("pause");
}

后期需要改善: 汉字的问题。

12306泄露的数据,快速查找有木有你的, 编程实现示例相关推荐

  1. python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)

    前言 之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样: value = data['store']['book'][0] ...

  2. 大数据快速入门(05):MapReduce 编程模型赏析

    一.Hadoop 诞生的传奇故事 (上图是 Doug Cutting,hadoop 之父) 1985年,Cutting 毕业于美国斯坦福大学. Cutting 的第一份工作是在 Xerox 做实习生, ...

  3. 大数据快速入门(09):永久弄清楚 Hive 分区表和分桶表的区别

    蛋蛋 和 小智 今天又在"打情骂俏",他们今天在谈论分区表和分桶表,走,我们去听听. 这天,蛋蛋去茶水间倒水,他把水杯放在饮水机下面,打开开关,一直盯着墙上的画在看,灵魂仿佛已经飞 ...

  4. arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

    风过无痕 原文  arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 1.查找数据Search Cu ...

  5. 索引 Index -- 快速查找数据

    文章目录 1. 为什么需要索引 2. 索引的需求定义 2.1 功能性需求 2.2 非功能性需求 3. 构建索引常用的数据结构 4. 总结 索引这种常用的技术解决思路,底层往往会依赖哪些数据结构? 1. ...

  6. B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?

    B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找? ~~B-Tree~~ ==B+Tree== ~~二叉树(Binary Search Tre ...

  7. 西门子PLC快速查找数据算法

    一.查找算法 1.当我们在一个 链表 或者 顺序表 中 查找 一个数据元素 是否存在 的时候,唯一的方法就是遍历整个表,这种方法称为 线性枚举.如果这时候,顺序表是有序的情况下,我们可以采用折半的方式 ...

  8. 6-1 简单快速排序分数 10作者 唐艳琴单位 中国人民解放军陆军工程大学本题要求实现一个函数,可快速查找给定x(保证是整个数据中其值存在,如果x有多个,查找第一个x)在整个数据中的排名(数据

    6-1 简单快速排序 分数 10 全屏浏览题目 切换布局 作者 唐艳琴 单位 中国人民解放军陆军工程大学 本题要求实现一个函数,可快速查找给定x(保证是整个数据中其值存在,如果x有多个,查找第一个x) ...

  9. 索引:如何在海量数据中快速查找某个数据?

    ------ 本文是学习算法的笔记,<数据结构与算法之美>,极客时间的课程 ------ 前面讲过MySQL数据库索引实现原理,底层是依赖B+树这种数据结构来实现的.那类似Redisp 这 ...

最新文章

  1. 安装Ubuntu时分区选择
  2. phpstrtotime()对于31日求上个月有问题
  3. Business Partner Relationship Category in CRM and C4C
  4. dom4j和jaxp解析工具的
  5. DBShop电子商务系统
  6. 安卓抓包软件_你们要的抓包神器!以及抓包原理
  7. libcare Hello World测试例
  8. 切换回Chrome上的上次标签及打开设置快捷键
  9. Rainbow分页解决方案
  10. 一套价值十万的微信公众号采集解决方案
  11. mysql表结构指哪些_gp数据库查看表结构
  12. 计算机网络找不到共享的打印机驱动程序,解决方案:连接共享打印机时如何解决“找不到驱动程序” _计算机硬件和网络_IT /计算机_...
  13. 楼板的弹性计算和塑形计算_板计算的时候什么时候用弹性计算
  14. ringbuffer java例子_Java RingBuffer.publish方法代碼示例
  15. React Native组件之Switch和Picker和Slide
  16. 谈谈promise,谈谈微任务
  17. 学习记录——初始——计算机学习准备
  18. 微信小程序 MinUI 组件库系列之 abnor 异常流组件 1
  19. VC++在局域网基于winpcap实现QQ号码IP嗅探
  20. 神州租车用户口碑佳,原因有3点

热门文章

  1. 如何介绍世界上第一台计算机,[世界第一台计算机]计算机简单的自我介绍第一篇...
  2. MG-BERT | 利用 无监督 原子表示学习 预测分子性质 | 在分子图上应用BERT | GNN | 无监督学习(掩蔽原子预训练) | attention
  3. 服务器光信号闪红灯是什么意思,wifi光信号闪红灯什么意思
  4. [推荐]在线照相大头贴功能
  5. 引流脚本是什么?引流脚本如何多开
  6. linux中rar压缩包的解压与压缩方法
  7. 理论学习与实践的差距:框架开源与不可逆的趋势
  8. 园区网络安全设计——核心层
  9. nginx 文件服务器 开源,在开源分布式文件系统MogileFS 中使用 Nginx
  10. struts2 报错