文件切割
来源:互联网 发布:废旧网络机顶盒改装 编辑:程序博客网 时间:2024/04/28 23:30
下面是切割文件和合并文件的代码,是我用来熟悉文件操作函数时写的一些东西,大有完善的余地,与大家分享,听取大家指教。程序在UNIX_AIX下调试通过。
/***************************
mycut.c
文件切割程序
用于将文件切割成1024字节大小的小文件
***************************/
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#define SIZE 1024
#define MAX 1048576*5
main(int argc, char **argv)
{
char buffer[SIZE],c;
FILE *source, *target;
struct stat sbuf;
int count = 0, n = 0;
char flag = '0';
char mycount[10];
char parts[10];
char mysign[20];
if(argc != 2)
{
fprintf(stderr, "Usage: source--file/n", *argv);
exit(1);
}
if((source = fopen(argv[1],"r")) == NULL)
{
perror(argv[1]);
exit(1);
}
stat(argv[1], &sbuf);
if(sbuf.st_size > MAX)
{
printf("the file is too big /n");
exit(0);
}
/*计算文件的块数*/
count = sbuf.st_size / SIZE + 1;
memset(mysign, 0, 10);
printf("%d/n", count);
/*记录文件个数*/
target = fopen("thecount","w");
sprintf(mysign, "%d", count);
fputs(mysign, target);
fclose(target);
/*记录文件名*/
target = fopen("thefilename","w");
fputs(argv[1], target);
fclose(target);
for(flag=0; flag<count; flag++)
{
sprintf(mysign,"%d",flag);
printf("%s",mysign);
target = fopen(mysign, "w");
n = fread(buffer, sizeof(char), SIZE, source);
fwrite(buffer, sizeof(char), n, target);
fclose(target);
}
fclose(source);
exit(0);
}
/***************************
mycomb.c
文件合并程序
用于将用上面程序切割的小文件合并复原
***************************/
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#define SIZE 1024
#define MAX 1048576*5
main(int argc, char **argv)
{
char buffer[SIZE],c;
FILE *source, *target;
struct stat sbuf;
int count = 0, n = 0;
char flag = '0';
char mycount[10];
char filename[20];
char mysign[10];
/*获得文件块数信息*/
if((source = fopen("thecount","r")) == NULL)
{
printf("some thing is wrong/n");
exit(1);
}
memset(mycount, 0, 10);
fgets(mycount,10,source );
fclose(source);
remove("thecount");
count = atoi(mycount);
/*获得文件名信息*/
if((source = fopen("thefilename","r")) == NULL)
{
printf("some thing is wrong/n");
exit(1);
}
memset(filename, 0, 20);
fgets(filename,10,source );
fclose(source);
remove("thefilename");
target = fopen(filename,"a");
memset(mysign, 0 ,10);
/*文件合并*/
for(flag=0; flag<count; flag++)
{
sprintf(mysign,"%d",flag);
printf("%s",mysign);
source = fopen(mysign, "r");
n = fread(buffer, sizeof(char), SIZE, source);
fwrite(buffer, sizeof(char), n, target);
fclose(source);
remove(mysign);
}
fclose(target);
exit(0);
}
- 文件切割
- 文件切割/合并工具
- DELPHI切割文件代码
- 文件切割子程序
- 文件切割脚本
- 文件切割方法
- txt文件切割器
- linux 文件切割
- 文件切割总结
- Java切割文件
- java文件切割
- Nginx 日志文件切割
- java文件切割
- split命令:文件切割
- Nginx 日志文件切割
- nginx日志文件切割
- IO流(切割文件)
- Nginx 日志文件切割
- 用VC++进行MapX二次开发::之三------使用MapX工具
- GIS在商业活动中的应用
- 初学UNIX C时的一点小收获
- 生成一个java编制的可执行文件
- 有关大数字运算的讨论
- 文件切割
- 翻页功能的实现
- 如何让yylex后的代码运行
- 谈谈asp.net项目中对Excel报表的使用心得
- 如何快速开发短信应用
- 日本软件工程
- When Python Attacks 1of 3
- 利用ASP+JMAIL进行邮件群发的新思路
- keil c51编译器的一些使用心得(一)