前段时间没事,学了一下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环境中运行了。

被折叠的 条评论
为什么被折叠?



