关于拆分文件的  问题入内
											看下面有个网友提出的问题 把一个大的文本文件分割成若干个小文件 最后一个文件为剩余字节 前几个文件大小都一致
自己写了一个 貌似思路比较清晰 实际和设想差距挺大的
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
//w21 w21.log 1000 wp  cmd模式下测试此代码  
//    其中  w21为自己编译的exe名 w21.log为待分割的文件名
//          1000为分割长度 wp为分割后的小文件名的前缀
{
    char buf[100]={'\0'};
    char t[100]={'\0'};
    FILE * infile;
    FILE * outfile;
    if((infile=fopen(argv[1],"r"))==NULL) 
    {
        printf("无法打开此文件\n");
        return 0 ; 
    }
    int i=0;
    char ch;
    int cout=0;
    while(1)
    {
        itoa(i,t,10);
        strcat(buf,argv[3]);
        strcat(buf,t);
        strcat(buf,".txt");   //以上几行代码用于连接输出自增型文件名
        outfile=fopen(buf,"w") ;
        while(!feof(infile))
        {
            ch=fgetc(infile);
            fputc(ch,outfile);
            ++cout;
            if(cout>=atoi(argv[2]))
            {
                fclose(outfile);
                break;
            }
        }
        printf("cout==%d  argv[2]==%d  \n",cout,atoi(argv[2]));  //调试用
        if(feof(infile)) break;
        memset(buf,'\0',100);
        i++;
        cout=0;
    }
    fclose(infile);
    char tmp[100]={'\0'};  //以下代码调试用
    strcat(tmp,"dir ");
    strcat(tmp,argv[1]);
    system(tmp);
    system("dir wp*.*");
    return 0;
}
/*
D:\c_source\w16\w21\Debug>w21 w21.log 1000 wp
cout==1000  argv[2]==1000
cout==1000  argv[2]==1000
cout==1000  argv[2]==1000
cout==1000  argv[2]==1000
cout==1000  argv[2]==1000
cout==549  argv[2]==1000
 驱动器 D 中的卷是 wanping-D
 卷的序列号是 98D7-D39A
 D:\c_source\w16\w21\Debug 的目录
2017-06-08  10:05             5,598 w21.log
               1 个文件          5,598 字节
               0 个目录 27,092,017,152 可用字节
 驱动器 D 中的卷是 wanping-D
 卷的序列号是 98D7-D39A
 D:\c_source\w16\w21\Debug 的目录
2017-06-08  10:05             1,011 wp0.txt
2017-06-08  10:05             1,006 wp1.txt
2017-06-08  10:05             1,006 wp2.txt
2017-06-08  10:05             1,007 wp3.txt
2017-06-08  10:05             1,008 wp4.txt
2017-06-08  10:05                 0 wp5.txt
               6 个文件          5,038 字节
               0 个目录 27,092,017,152 可用字节
*/
/*
这里出现了几个问题
1、分割后小文件 并不是理想中的长度为1000每个 
2、出现了3个各不相同的文件大小  理论应该全部相等的 分别是 5594  5038  5549
*/
[此贴子已经被作者于2017-6-8 10:12编辑过]



											
	    

	
											