码迷,mamicode.com
首页 > 编程语言 > 详细

【C语言编程】使用C语言实现文件组的合并

时间:2015-04-10 17:51:53      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:c语言   文件操作   文件组的合并   file   mergefiles   

使用C语言的文件操作实现文件组的合并,下面是代码,过程写在了注释里,主要思想就是一个一个地先获取文件的长度,然后整块复制文件,将其输入进目标文件的末尾:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
//合并文件组
void MergeFiles(char** sFiles,int nFileCount,char* target); 

int main()
{
    char** p=(char**)malloc(100);
    p[0]="1.txt";   //里面内容:床前明月光, 
    p[1]="2.txt";   //里面内容:疑是地上霜 
    p[2]="3.txt";   //里面内容:。

    char* target= "4.txt";
    MergeFiles(p,3,target); //合并三个文件,结果输出到4.txt

    //打开4.txt,将里面的内容输出到屏幕中 
    FILE* file1 = fopen("4.txt","r");
    char c;
    //一个字符一个字符地将文件内容输出到屏幕上 
    while((c=fgetc(file1))!=EOF)
    {
        printf("%c",c);
    }
    getch();
    return 0;
}

//合并文件组
void MergeFiles(char** sFiles,int nFileCount,char* _target)
{   
    int i = 0;
    //当前文件,目标文件 
    FILE *current,*target;
    int length = 0;
    char* s;
    target = fopen(_target,"wb");           //以可写的二进制模式打开目标文件 
    for(i = 0; i < nFileCount ; i++)        //根据文件个数遍历源文件组 
    {
        current = fopen(sFiles[i],"rb");    //以二进制只读模式打开当前源文件 
        fseek(current,0,SEEK_END);          //定位到当前源文件末尾 
        length = ftell(current);            //获取当前源文件指针的位置,即获取了文件长度
        if(!length)
            return;
        fseek(current,0,SEEK_SET);          //定位到当前源文件开头 
        s = (char*)malloc(length);          //读取源文件的缓存区 
        fread(s,1,length,current);          //将源文件的内容读至缓存区 
        fwrite(s,1,length,target);          //将缓存区里的内容写至目标文件 
        fclose(current);                    //关闭当前源文件,开始进行下一个源文件的读取 
    }
    fclose(target);                         //关闭目标文件 
}

输出结果:
技术分享

【C语言编程】使用C语言实现文件组的合并

标签:c语言   文件操作   文件组的合并   file   mergefiles   

原文地址:http://blog.csdn.net/zgljl2012/article/details/44982471

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!