63.当当网txt数据按行切割与合并
- 获取文件有多少行
//获取文件有多少行
int getN(char *path)
{
FILE *pf = fopen(path, "r");
if (pf==NULL)
{
return -;
}
else
{
int i = ;
while (!feof(pf))
{
char str[] = { };
fgets(str, , pf);
i++;
}
fclose(pf);
return i;
}
} - 宏定义行数
//数据的行数
#define N 13180820 - 文件按行切割
//文件切割
void space(char *path, int num)
{
char ** pathes = malloc(sizeof(char*)*num);
for (int i = ; i < num;i++)
{
pathes[i] = malloc(sizeof(char) * );
//格式化处理文件名
sprintf(pathes[i], "dangdangwang%d.txt", i + );
} //打开文件
FILE *pf = fopen(path, "r"); if (pf == NULL)
{
return -;
}
else
{
//如果能被整除
if (N%num == )
{
for (int i = ; i < num;i++)
{
//写入文件
FILE *pfw = fopen(pathes[i], "w");
for (int j = ; j < N / num; j++)
{
char str[] = { };
//读取一行写入一行
fgets(str, , pf);
fputs(str, pfw);
}
fclose(pfw);
}
}
else
{
for (int i = ; i < num - ; i++)
{
//写入文件
FILE *pfw = fopen(pathes[i], "w");
//处理前面n-1个
for (int j = ; j < N / (num-); j++)
{
char str[] = { };
//读取一行写入一行
fgets(str, , pf);
fputs(str, pfw);
}
fclose(pfw); } {
//处理剩下的
//写入
FILE *pfw = fopen(pathes[num-], "w");
for (int j = ; j < N %(num-); j++)
{
char str[] = { };
//读取一行写入一行
fgets(str, , pf);
fputs(str, pfw);
}
fclose(pfw);
}
}
fclose(pf);
}
} - 文件合并
//合并文件
void merge(char *newpath,int n)
{
char ** pathes = malloc(sizeof(char*)*n);
for (int i = ; i < n; i++)
{
pathes[i] = malloc(sizeof(char) * );
sprintf(pathes[i], "dangdangwang%d.txt", i + );
} //写入文件
FILE *pf = fopen(newpath, "w");
if (pf == NULL)
{
return -;
}
else
{
//依次读取每个文件
for (int i = ; i < n;i++)
{
FILE *pfr = fopen(pathes[i], "r"); while (!feof(pfr))
{
char str[] = { };
//读取一行写入一行
fgets(str, , pfr);
fputs(str, pf);
}
fclose(pfr);
}
fclose(pf);
}
} - 测试函数
void main()
{
//int num = getN(path);
//printf("%d", num);获取行数
int num;
scanf("%d", &num); //分割
space(path, num);
//合并
merge(newpath, num); system("pause");
}
完整代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
char *path = "dangdangwang.txt";
char *newpath = "dangdangwangN.txt"; //数据的行数
#define N 13180820 //获取文件有多少行
int getN(char *path)
{
FILE *pf = fopen(path, "r");
if (pf==NULL)
{
return -;
}
else
{
int i = ;
while (!feof(pf))
{
char str[] = { };
fgets(str, , pf);
i++;
}
fclose(pf);
return i;
}
} //文件切割
void space(char *path, int num)
{
char ** pathes = malloc(sizeof(char*)*num);
for (int i = ; i < num;i++)
{
pathes[i] = malloc(sizeof(char) * );
//格式化处理文件名
sprintf(pathes[i], "dangdangwang%d.txt", i + );
} //打开文件
FILE *pf = fopen(path, "r"); if (pf == NULL)
{
return -;
}
else
{
//如果能被整除
if (N%num == )
{
for (int i = ; i < num;i++)
{
//写入文件
FILE *pfw = fopen(pathes[i], "w");
for (int j = ; j < N / num; j++)
{
char str[] = { };
//读取一行写入一行
fgets(str, , pf);
fputs(str, pfw);
}
fclose(pfw);
}
}
else
{
for (int i = ; i < num - ; i++)
{
//写入文件
FILE *pfw = fopen(pathes[i], "w");
//处理前面n-1个
for (int j = ; j < N / (num-); j++)
{
char str[] = { };
//读取一行写入一行
fgets(str, , pf);
fputs(str, pfw);
}
fclose(pfw); } {
//处理剩下的
//写入
FILE *pfw = fopen(pathes[num-], "w");
for (int j = ; j < N %(num-); j++)
{
char str[] = { };
//读取一行写入一行
fgets(str, , pf);
fputs(str, pfw);
}
fclose(pfw);
}
}
fclose(pf);
}
} //合并文件
void merge(char *newpath,int n)
{
char ** pathes = malloc(sizeof(char*)*n);
for (int i = ; i < n; i++)
{
pathes[i] = malloc(sizeof(char) * );
sprintf(pathes[i], "dangdangwang%d.txt", i + );
} //写入文件
FILE *pf = fopen(newpath, "w");
if (pf == NULL)
{
return -;
}
else
{
//依次读取每个文件
for (int i = ; i < n;i++)
{
FILE *pfr = fopen(pathes[i], "r"); while (!feof(pfr))
{
char str[] = { };
//读取一行写入一行
fgets(str, , pfr);
fputs(str, pf);
}
fclose(pfr);
}
fclose(pf);
}
} void main()
{
//int num = getN(path);
//printf("%d", num);获取行数
int num;
scanf("%d", &num); //分割
space(path, num);
//合并
merge(newpath, num); system("pause");
}
63.当当网txt数据按行切割与合并的更多相关文章
- Python爬虫库Scrapy入门1--爬取当当网商品数据
1.关于scrapy库的介绍,可以查看其官方文档:http://scrapy-chs.readthedocs.io/zh_CN/latest/ 2.安装:pip install scrapy 注意这 ...
- scrapy获取当当网中数据
yield 1. 带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代 2. yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yiel ...
- java爬虫,爬取当当网数据
背景:女票快毕业了(没错!我是有女票的!!!),写论文,主题是儿童性教育,查看儿童性教育绘本数据死活找不到,没办法,就去当当网查询下数据,但是数据怎么弄下来呢,首先想到用Python,但是不会!!百 ...
- 【转】java爬虫,爬取当当网数据
背景:女票快毕业了(没错!我是有女票的!!!),写论文,主题是儿童性教育,查看儿童性教育绘本数据死活找不到,没办法,就去当当网查询下数据,但是数据怎么弄下来呢,首先想到用Python,但是不会!!百 ...
- scrapy项目3:爬取当当网中机器学习的数据及价格(spider类)
1.网页解析 当当网中,人工智能数据的首页url如下为http://category.dangdang.com/cp01.54.12.00.00.00.html 点击下方的链接,一次观察各个页面的ur ...
- 网络爬虫之定向爬虫:爬取当当网2015年图书销售排行榜信息(Crawler)
做了个爬虫,爬取当当网--2015年图书销售排行榜 TOP500 爬取的基本思想是:通过浏览网页,列出你所想要获取的信息,然后通过浏览网页的源码和检查(这里用的是chrome)来获相关信息的节点,最后 ...
- 转 当当网资深DBA:DB运维四大现代化的实现
位好,今天我的主题是 <DB运维的四个现代化> ,看标题就能明白,是关于DBA自动化运维平台的事情.http://dbaplus.cn/news-21-855-1.html 主要是分享下我 ...
- python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍
来啦,老弟 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 ... 那么接下来 我们就使用 requests 和 re ...
- Python 东方财富网-股市行情数据抓取
东方财富网 股市行情数据抓取: http://quote.eastmoney.com/center/gridlist.html#hs_a_board 请求数据未入库处理,其中数据只存入数据文本,未做存 ...
随机推荐
- HDU——T 2647 Reward
http://acm.hdu.edu.cn/showproblem.php?pid=2647 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- gpdb删除segment上残余的session和sql
转载请注明出处:gpdb删除segment上残余的session和sql 最近公司的gpdb的变卡,导致线上系统查询队列阻塞,用户一点数据都查不出来. 每天早上我和同事都得用我们自家做的gpdb运维平 ...
- 受不了Android SDK文档打开缓慢问题,自己开发简易脱机浏览器。
google android sdk离线文档打开的时候特别慢,据说是要从谷歌官网拉取一些东西导致的.脱机浏览能够解决该问题.PC端能够使用firefox. 可是Android端貌似没有支持脱机工作的浏 ...
- C语言keywordstatic的绝妙用途
为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个静态变量.在变量类型的前面加上就自己主动清0了.还有就是加上statickeyword的,无论是变量 ...
- avalon 笔记---Mr.wing
Avalon笔记步骤一:引用js文件<script src="js/avalon.js"></script>步骤二:<script> var v ...
- 101.C++继承三种权限
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承特点 1.public继承不改变基类成员的访问权限 ...
- 打开文件对话框在xp和win7上的实现文件任意多选
作者:朱金灿 来源:http://blog.csdn.net/clever101 在xp系统上进行文件多选,实际上其文件字符串数组的缓冲区是有限,并不能支持选择任意多个文件,为此以前我还写过一篇文章: ...
- Container详解
Container是一个拥有绘制.定位.调整大小的widget. padding和margin padding和margin分别设置Container的内边距和外边距.可取值包括下面四个: EdgeI ...
- 日天的终生大事(dp)
日天的终生大事 题目描述 日天学长向妹子表白了,妹子说:“日天你那么聪明,回答我一个问题就答应你.你告诉我,L位K进制数有多少个?”日天表示这个问题太简单了,要求提高难度.妹子想了想说:“那么我增加一 ...
- 在Windows下如何创建指定的虚拟环境
前几天给大家分享了如何在默认的情况下创建虚拟环境,没来得及上车的伙伴,可以戳这篇文章:在Windows下如何创建虚拟环境(默认情况下).今天小编给大家分享一下,如何创建的指定的Python环境. 创建 ...