拆分文件.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
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
));
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
));
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
));
fOUT
= fopen("第3部分.exe", "wb");
fwrite(data
, 1, 5581076, fOUT
);
free(data
);
fclose(fOUT
);
}
int main()
{
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
);
file_r_w_2(fIN
);
file_r_w_3(fIN
);
fclose(fIN
);
return 0;
}
合并文件.c
#include <stdio.h>
#define IN
int 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);
int len1
= ftell(fpIN1
);
fseek(fpIN1
,0,0);
printf("%d\n", len1
);
unsigned char in1
[len1
];
fread(in1
,1,len1
,fpIN1
);
fclose(fpIN1
);
fpIN2
= fopen(orgnFile2
,"rb");
fseek(fpIN2
,0L,SEEK_END);
int len2
= ftell(fpIN2
);
fseek(fpIN2
,0,0);
printf("%d\n", len2
);
unsigned char in2
[len2
];
fread(in2
,1,len2
,fpIN2
);
fclose(fpIN2
);
fpIN3
= fopen(orgnFile3
,"rb");
fseek(fpIN3
,0L,SEEK_END);
int len3
= ftell(fpIN3
);
fseek(fpIN3
,0,0);
printf("%d\n", len3
);
unsigned char in3
[len3
];
fread(in3
,1,len3
,fpIN3
);
fclose(fpIN3
);
fpOUT
= fopen(outFile
,"w+");
fwrite(in1
,sizeof(in1
),1,fpOUT
);
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 <stdio.h>
#include<malloc.h>
#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 *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://lol.8miu.com/read-23883.html