文件分割与合并

原创 2018年04月15日 10:18:45
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#include<process.h>
#include<string.h>
#define N 58  //行数
#define M 124 //每一行的最大字符数

int getN(char *path);  //获得源文件行数
int getMax(char *path);	//获得每一行的字符数,返回最大的数
void dividile(char *path,int num);	//分割
void meger(char *path, int num);//合并
char *path = "C:\\Users\\Administrator\\Desktop\\英语.txt"; //源文件路径
char *newpath = "C:\\Users\\Administrator\\Desktop\\合并英语.txt";	//合并后文件的新路径
int getMax(char *path)
{

	FILE *pf = fopen(path, "r");
	if (pf!=NULL)
	{			  
		char ch[M] = { 0 };
		int i = -1;
		while (!feof(pf))
		{
			fgets(ch, M, pf);
			int length = strlen(ch);
			if (length>i)
			{
				i = length;

			}

		}
		return i;

	}
	else
	{
		return -1;
	}

}

int getN(char *path)
{
	FILE *pf = fopen(path, "r");
	if (pf!=NULL)
	{
		char ch[M] = { 0 };
		int i = 0;
		while (!feof(pf))
		{
			fgets(ch, M, pf);
			i++;

		}
		return i;


	}		
	else
	{
		return -1;
	}


}

void dividile(char *path,int num)
{
	if (N%num==0)
	{
		char **pp = (char **)malloc(sizeof(char *)*num);
		FILE *pfr = fopen(path, "r");
	
		for (int i = 0; i < num; i++)
		{
			pp[i] = malloc(sizeof(char)*M);
			memset(pp[i], '\0', M);
			sprintf(pp[i], "C:\\Users\\Administrator\\Desktop\\英语%d.txt", i + 1);

			char ch[M] = { 0 };
			FILE *pfw = fopen(pp[i], "w");
			for (int j = 0; j < N/num; j++)
			{
				fgets(ch, M, pfr);
				fputs(ch, pfw);
			}
			fclose(pfw);
		}
		fclose(pfr);

	}
	else
	{
		char **pp = (char **)malloc(sizeof(char *)*(num-1));
		FILE *pfr = fopen(path, "r");

		for (int i = 0; i < num-1; i++)
		{
			pp[i] = malloc(sizeof(char)*M);
			memset(pp[i], '\0', M);
			sprintf(pp[i], "C:\\Users\\Administrator\\Desktop\\英语%d.txt", i + 1);

			char ch[M] = { 0 };
			FILE *pfw = fopen(pp[i], "w");
			for (int j = 0; j < N / (num-1); j++)
			{
				fgets(ch, M, pfr);
				fputs(ch, pfw);
			}
			fclose(pfw);
		}

		pp[num-1] = malloc(sizeof(char)*M);
		memset(pp[num-1], '\0', M);
		sprintf(pp[num-1], "C:\\Users\\Administrator\\Desktop\\英语%d.txt", num);
		char ch[M] = { 0 };
		FILE *pfw = fopen(pp[num-1], "w");
		for (int j = 0; j < N % (num - 1); j++)
		{
			fgets(ch, M, pfr);
			fputs(ch, pfw);
		}
		fclose(pfw);


		fclose(pfr);


	}

	

}

void meger(char *newpath, int num)
{
	char **pp = malloc(sizeof(char *)*N);
	FILE *pfw = fopen(newpath, "w");
	for (int i = 0; i < num; i++)
	{
		pp[i] = malloc(sizeof(char)*M);
		sprintf(pp[i], "C:\\Users\\Administrator\\Desktop\\英语%d.txt", i + 1);
		
		
		FILE *pfr = fopen(pp[i], "r");
		while (!feof(pfr))
		{
			char ch[M] = { 0 };
			fgets(ch, M, pfr);
			fputs(ch, pfw);
		}
		
		fclose(pfr);
	}
	fclose(pfw);

}
void main()
{
	int num;
	scanf("%d", &num);
	dividile(path, num); //切割num份
	//meger(newpath, num);		   将num份合并
	

	system("pause");
}

高并发集群架构超细精讲

本内容为老男孩教育运维班18期期末架构内部精讲, 目前最新课程讲解将更加细致、完善。 内容涉及大中型集群架构的方方面面的细节 值得所有初中级运维朋友学习、了解。 ===分享内容可能涉及如下知识点=== LVS集群架构、NGINX集群架构 LVS组合NGINX集群架构。 Web缓存、DB缓存、持久化存储 NFS存储及高可用、分布式文件系统 动静分离、动态产品拆分 数据库读写分离、数据库高可用
  • 2015年05月21日 10:37

文件分割合并工具

  • 2011年10月30日 10:50
  • 28.49MB
  • 下载

java 文件分割及合并

文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并。很多高大上的分布式文件系统(比如:google的GFS、taobao的TFS)里,也是按block为单位,...
  • jdsjlzx
  • jdsjlzx
  • 2016-04-19 17:49:23
  • 1707

FileSplitter文件分割合并

  • 2010年12月12日 14:28
  • 1.54MB
  • 下载

文件分割与合并源码(VC)

  • 2011年08月23日 17:05
  • 374KB
  • 下载

文件分割合并器———文件分割合并好工具

  • 2010年02月04日 11:50
  • 108KB
  • 下载

JAVA写的文件分割与文件合并程序

  原来觉得文件的切割与合并好神秘,觉得能够写这样程序的人简直就是高手、老鸟之类的人了,呵呵。  现在我自己这么一写,才觉得是如此之简单,连我这都菜鸟都能够写(不过,还是花了我将近半天的时间,呵呵),...
  • fenglibing
  • fenglibing
  • 2007-01-09 21:49:00
  • 12565

C#文件的分割与合并

C#实现文件的分割与合并
  • scimence
  • scimence
  • 2015-04-02 09:22:21
  • 1612

android文件的合并与拆分

  • 2012年02月29日 12:12
  • 13KB
  • 下载

java文件分割合并

  • 2012年01月08日 23:21
  • 2KB
  • 下载
收藏助手
不良信息举报
您举报文章:文件分割与合并
举报原因:
原因补充:

(最多只允许输入30个字)