合并多个文件的C代码

前段时间没事,学了一下Linux环境下的C编程,一直写Java代码,再写C代码感觉还有些不习惯,下面是自己写的一个合并多个文件的例子。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//#include <windows.h>

#define BUF_SIZE = 1024;

int fconcat(FILE* destfile,const char* srcfile) {
	char buffer[8];
	FILE* srcfp;
	int len;
	int charlen;

	if ((srcfp = fopen(srcfile,"rb")) == NULL) {
		perror("open file failed!");
		return 0;
	}
	charlen = sizeof(char);
	printf("char length=%d",charlen);
	while ((len = fread(buffer,1,8,srcfp)) > 0) {
		fwrite(buffer,1,len,destfile);
	}
	printf("last len=%d\n",len);
	fclose(srcfp);
	return 1;
};

int createfile(char* filename,char ch)
{
   int size = 999999;
   int i;
   FILE* srcfp;
   if ((srcfp = fopen(filename,"w+")) == NULL) {
		perror("open file failed!");
		return 0;
	}
   for (i=1;i<size;i++)
   {
      fputc(ch,srcfp);
	  if(i%100 == 0)
	  {
	     fputc('\n',srcfp);
	  }	  
	}
    fclose(srcfp);
    return 1;
}
 
int main(void)
{
	FILE* fp;
	char* srcfile = "/opt/nohup2.log.tmp";
	char* destfile = "/opt/nohup.log";
	int fileSize = 5;
	int sslen;
	int i;
	char pnf[64];
	//DWORD start,finish,usetime;
	int tstart,tfinish,uset;
	char chs[5] = {'a','b','c','d','e'};

	//start = GetTickCount();
	tstart = time(NULL);
	if ((fp=fopen(destfile,"ab+")) == NULL) {
		perror("Open file failed\n");
		exit(1);
	}

	for (i=0;i<fileSize;i++) {
		sprintf(pnf,"%s%d",srcfile,i);
		printf("合并文件%s\n",pnf);
		fconcat(fp,pnf);
		//createfile(pnf,chs[i]);
	}
	fclose(fp);
	//finish = GetTickCount();
	tfinish = time(NULL);
	//usetime = finish - start;
	uset = tfinish - tstart;	
	printf("耗时%d秒",uset);
	return 0;
}

 

这是标准c代码,在windows环境里也可以运行,但是取时间的方法和Linux不同,换成注释里的代码就可以在windows环境中运行了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值