是TXT分割吗,我自己编了一个C程序:
#include
//#include
#include
#include
int part_num[9999]={0};
char newname[8]="";
char p[8]={0,0,0,0,0,0,0,0};
void txt_wrte();
void int2str(int x);
void num2str(int x,int n,char p[8]);
main()
{
FILE *fp;//文件指针fp
int Bytenum=0,Bytenum2=0;
int pnum=0;
int pnum_p_part;
int temp,i;
char ch,key;
// char str[65536];
char ffilename;
char *filename;//="sq3.txt";
char *pachname=".\\";
char *endname=".txt";
char fhead[32]="";
char fullname[32]="";
char filetemp[17]="";
int szname;
printf("输入文件名\n");
printf("Input filename:\n");
// scanf("%s",&filename);//输入文件名
for(temp=0;temp<16;temp++)
{
key=getchar();
if(key=='\n')
{break;}
filetemp[temp]=key;
//filename++;
}
printf("----------\n");
filename=&filetemp;
printf("----------\n");
strcpy(fullname,pachname);//路径以及文件名拼接
strcat(fullname,filename);
strcpy(fhead,fullname);
strcat(fullname,endname);
printf("%s\n",fullname);
// fullname=strcat(pachname,filename);
if((fp=fopen(fullname,"rt"))==NULL)
{
printf("can't open");
getch();
exit(1);
}
else
{
printf("open sucsessfuly!\n");
}
//---------------------------------
ch=fgetc(fp);
while(ch!=EOF)
{
//putch(ch);
ch=fgetc(fp);
if(ch=='\n')
{
pnum++;
}
//pnum*20000/(Bytenum)
Bytenum++;
}
printf("\n该文件一共有 %d B(字节), %d 个段落.\n",Bytenum,pnum);
// printf("大约每 %d 段有 20KB.\n",pnum/(Bytenum/20000));//must >=20kB
printf("大约每 %d 段有 20KB.\n",pnum*20000/(Bytenum));
printf("分割成每个文件的段落数为:");
scanf("%d",&pnum_p_part);
printf("大约会有 %d 个文件生成.\n",pnum/pnum_p_part);
//----------------------------
rewind(fp);
ch=fgetc(fp);
temp=0;i=0;
Bytenum2=0;
while(ch!=EOF)
{
ch=fgetc(fp);
if(ch=='\n')
{
temp++;// '\n'的个数
if(temp%pnum_p_part==0)
{
part_num[i+1]=Bytenum2;//记录 \n 的位置
//printf("\n enter:%d\n",part_num[i]);
i++;
}
}
Bytenum2++;
if(ch==EOF) part_num[i]=Bytenum2;
}
//---------------------------------------
// for(i=0;i<(pnum/pnum_p_part+1);i++)
// {
// printf("\n enter:%d\n",part_num[i]);
// }
//-----------------------------------------
printf("----------\n");
printf("----------\n");
txt_wrte(filename,pnum/pnum_p_part,fp,part_num);
// fgets(str,i,fp);
fclose(fp);
while(!kbhit());
}
void txt_wrte(char *filename,int totalpartnum,FILE *fp,int part_num[9999])
{
FILE *fp_pic;
int i,j;
int str_len;
char ch_temp;
rewind(fp);
//fseek(fp,part_num[i],0);
mkdir(".\\new");
//num2str(totalpartnum,4,p);
int2str(p,totalpartnum);
printf("%s\n",p);
strcpy(newname,".\\new\\");
strcat(newname,filename);
strcat(newname,"_");
strcat(newname,p);
//strcat(newname,".txt");
// printf("%s\n",newname);
str_len=strlen(newname);
for(i=0;i { // printf("%s\n",p); //strcpy(newname,".\\new\\"); strcat(newname,filename); strcat(newname,"_"); for(j=0;j<8;j++) p[j]=0; //for(j=0;j<8;j++) newname[j]=0;//clear space strcpy(newname,""); int2str(p,i); strcpy(newname,".\\new\\"); //strcat(newname,filename); strcat(newname,p); strcat(newname,".txt"); printf("%s\n",newname); if((fp_pic=fopen(newname,"wt"))==NULL) { printf("can't open"); getch(); exit(1); } else { printf("open sucsessfuly!\n"); for(j=0;j<(part_num[i+1]-part_num[i]);j++)//write byte { ch_temp=fgetc(fp); fputc(ch_temp,fp_pic); } } fclose(fp_pic); } } /*void num2str(int x,int n,char p[8]) { // char *pp=p[0]; static char num_str[11]={"0123456789"}; if(n==1) {p[0]=num_str[x%10];} else if (n==2) { p[0]=num_str[(x%100)/10]; p[1]=num_str[x%10]; } else if (n==3) { p[0]=num_str[(x%1000)/100]; p[1]=num_str[(x%100)/10]; p[2]=num_str[x%10]; } else if (n==4) { p[0]=num_str[(x%10000)/1000]; p[1]=num_str[(x%1000)/100]; p[2]=num_str[(x%100)/10]; p[3]=num_str[x%10]; } else exit(1); //printf("%c%c%c%c\n",p[0],p[1],p[2],p[3]); // return pp; }*/ void int2str(char p[8],int x) { //static //char tempre[5]=""; p[0]=(x%10000)/1000+48; p[1]=(x%1000)/100+48; p[2]=(x%100)/10+48; p[3]=x%10+48; p[4]='\0'; //p=tempre; // return tempre; }