拆分文件和合并文件(C代码)
发布日期:2021-09-14 23:17:58 浏览次数:13 分类:技术文章

本文共 4778 字,大约阅读时间需要 15 分钟。

拆分文件.c

/*将文件拆分为3个部分*/#include 
#include
#include
void file_r_w_1(FILE * fIN1){
FILE * fOUT; fseek(fIN1,0,SEEK_SET); char *data; data=malloc(16); fread(data, 1, 16, fIN1); printf("%d\n", strlen(data)); // printf("%s\n", data); fOUT = fopen("第1部分.exe", "wb"); fwrite(data, 1, 16, fOUT); free(data); fclose(fOUT);}void file_r_w_2(FILE * fIN2){
FILE * fOUT; fseek(fIN2,16,SEEK_SET); // 通过这边拆出 char *data; data=malloc(32); fread(data, 1, 32, fIN2); printf("%d\n", strlen(data)); // printf("%s\n", data);printf("1\n"); fOUT = fopen("第2部分.exe", "wb"); fwrite(data, 1, 32, fOUT); free(data); fclose(fOUT);}void file_r_w_3(FILE * fIN3){
FILE * fOUT; fseek(fIN3,48,SEEK_SET); char *data; data=malloc(5581076); fread(data, 1, 5581076, fIN3); printf("%d\n", strlen(data)); // printf("%s\n", data); fOUT = fopen("第3部分.exe", "wb"); fwrite(data, 1, 5581076, fOUT); free(data); fclose(fOUT);}int main() // 将文件拆为3个部分{
FILE * fIN; fIN = fopen("测试.exe", "rb"); fseek(fIN,0L,SEEK_END); int file_len = ftell(fIN); fseek(fIN,0,0); printf("文件大小为[%d]\n", file_len); file_r_w_1(fIN); // 第1部分 file_r_w_2(fIN); // 第2部分 file_r_w_3(fIN); // 第3部分 fclose(fIN); return 0;}

合并文件.c

// 合并文件#include 
#define INint rwFile(IN char * orgnFile1, IN char * orgnFile2, IN char * orgnFile3, IN char * outFile){
FILE *fpIN1; FILE *fpIN2; FILE *fpIN3; FILE *fpIN4; FILE *fpOUT; fpIN1 = fopen(orgnFile1,"rb"); // 打开原始的文件 // 获取文件大小 fseek(fpIN1,0L,SEEK_END); // 这一句是将文件指针fp移动到文件数据的最后一位上 int len1 = ftell(fpIN1); // 获取当前文件指针到文件开头的长度大小 fseek(fpIN1,0,0); // 将文件指针fp移动到文件开头的地方 printf("%d\n", len1); unsigned char in1[len1]; fread(in1,1,len1,fpIN1); // 读取原始文件,将文件内容存到 in 中 fclose(fpIN1); fpIN2 = fopen(orgnFile2,"rb"); // 打开原始的文件 // 获取文件大小 fseek(fpIN2,0L,SEEK_END); // 这一句是将文件指针fp移动到文件数据的最后一位上 int len2 = ftell(fpIN2); // 获取当前文件指针到文件开头的长度大小 fseek(fpIN2,0,0); // 将文件指针fp移动到文件开头的地方 printf("%d\n", len2); unsigned char in2[len2]; fread(in2,1,len2,fpIN2); // 读取原始文件,将文件内容存到 in 中 fclose(fpIN2); fpIN3 = fopen(orgnFile3,"rb"); // 打开原始的文件 // 获取文件大小 fseek(fpIN3,0L,SEEK_END); // 这一句是将文件指针fp移动到文件数据的最后一位上 int len3 = ftell(fpIN3); // 获取当前文件指针到文件开头的长度大小 fseek(fpIN3,0,0); // 将文件指针fp移动到文件开头的地方 printf("%d\n", len3); unsigned char in3[len3]; fread(in3,1,len3,fpIN3); // 读取原始文件,将文件内容存到 in 中 fclose(fpIN3); fpOUT = fopen(outFile,"w+"); // 打开要写入的文件 fwrite(in1,sizeof(in1),1,fpOUT); // 将上面读取的 in 写入到要写入的文件中 fwrite(in2,sizeof(in2),1,fpOUT); fwrite(in3,sizeof(in3),1,fpOUT); fclose(fpOUT); return 0;}int main(){
char *origin_file1 = "第1部分.exe"; char *origin_file2 = "第2部分.exe"; char *origin_file3 = "第3部分.exe"; char *out_file = "新的.exe"; rwFile(origin_file1, origin_file2, origin_file3, out_file); return 0;}

对于大文件的合并可以用这个:

// 合并文件#include 
#include
#define IN#define OUT// 获取文件大小int FileSize(IN char *file){
FILE *fil; fil = fopen(file,"rb"); fseek(fil,0L,SEEK_END); int filesize = ftell(fil); fseek(fil,0,0); return filesize;}// 读取文件int ReadFileData(IN char *fileName, OUT char *filedata){
FILE *fpIN; int fileSizes = FileSize(fileName); fpIN = fopen(fileName,"rb"); fread(filedata,1,fileSizes,fpIN); fclose(fpIN);}// 写入文件int WriteToFile(char *filedata, int size, OUT char *outFileName){
FILE *fpOUT; fpOUT = fopen(outFileName,"w+"); fwrite(filedata,1,size,fpOUT); fclose(fpOUT);}int main(){
char *outFile = "outfile.mp4"; FILE *fpOUT; fpOUT = fopen(outFile,"w+"); char *origin_file = "1-1.mp4"; int orgfilesize = FileSize(origin_file); // 获取文件的大小 char *file_data=malloc(orgfilesize); // 分配文件大小的内存 ReadFileData(origin_file, file_data); // 读取文件 fwrite(file_data,1,orgfilesize,fpOUT); // char *outFile = "outfile.mp4"; // WriteToFile(file_data,orgfilesize,outFile); // 写出文件 char *origin_file1 = "1-2.mp4"; int orgfilesize1 = FileSize(origin_file1); // 获取文件的大小 char *file_data1=malloc(orgfilesize1); // 分配文件大小的内存 ReadFileData(origin_file1, file_data1); // 读取文件 fwrite(file_data1,1,orgfilesize1,fpOUT); char *origin_file2 = "1-3.mp4"; int orgfilesize2 = FileSize(origin_file2); // 获取文件的大小 char *file_data2=malloc(orgfilesize2); // 分配文件大小的内存 ReadFileData(origin_file2, file_data2); // 读取文件 fwrite(file_data2,1,orgfilesize2,fpOUT); char *origin_file3 = "1-4.mp4"; int orgfilesize3 = FileSize(origin_file3); // 获取文件的大小 char *file_data3=malloc(orgfilesize3); // 分配文件大小的内存 ReadFileData(origin_file3, file_data3); // 读取文件 fwrite(file_data3,1,orgfilesize3,fpOUT); char *origin_file4 = "1-5.mp4"; int orgfilesize4 = FileSize(origin_file4); // 获取文件的大小 char *file_data4=malloc(orgfilesize4); // 分配文件大小的内存 ReadFileData(origin_file4, file_data4); // 读取文件 fwrite(file_data4,1,orgfilesize4,fpOUT); // 后面还可以增加更多文件 fclose(fpOUT); return 0;}

转载地址:https://blog.csdn.net/weixin_43451928/article/details/109209471 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:经典 | 10 分钟快速总结 Python3 语法
下一篇:找出文件夹中的相同文件,并移动到指定文件夹中

发表评论

最新留言

很好
[***.229.124.182]2024年03月22日 11时56分25秒