txt分割器

好像是学习c++时自己写的一个txt分割器,粗糙简陋

代码如下:

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#define N 200
#define M 500

using namespace std;
string name(string filename,int i);
int main()
{
	int x=1,i=1,j=1,n;
	char c;
	string filename,filenamehead,chushi;

	cout<<"=====txt文件分割器======= " <<endl;
	cout<<"请输入你要处理的txt文件:"<<endl;
	cout<<"输入格式如下:"<<endl;
	cout<<"将一般使用路径中的'\\'换为'\\\\' "<<endl;
      cout<<"例: d:\\\\cs\\\\123.txt"<<endl;
	cin>>filename;
	chushi=filename;

	//统计文件字数-----------------------------------------
	ifstream fin( filename.c_str() ); 
	if(!fin)
	{
		cout<<"文件无法打开"<<"请检查后正确输入"<<endl;
		return -1;
	}
	while(   ( c=fin.get() )!=EOF )  
	{
	if (c=='\n')
		{	x++;	}		
	}
	cout<<endl;
	fin.close();
	cout<<"该文件的行数为:"<<x<<endl;

	cout<<"请输入你要分成的份数(小于500份)"<<endl;
	cin>>n;

	 //分离出文件名称filename
	filename.erase (  filename.end()-4,  filename.end()      );
	cout<<"分割的文件与原文件在同一目录下"<<endl;
	cout<<"正在进行分割"<<endl<<"请稍后..."<<endl;
	
      //处理文件  按行分割
      ifstream chushiin(   chushi.c_str( ) );
      filenamehead=name(filename,1);  
	ofstream out(filenamehead.c_str() );
	  
}
string name(string filename,int i)
{
	char str[10];
	string filenamehead;
	itoa( i ,str,10);		
	string fz(str);		
	filenamehead=filename+"_"+fz+".txt";



return filenamehead; }

 下面还有个2011年暑假写的c语言txt分割器

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 #define M 100
  5 void print1();
  6 int print2()                 //txt文件的显示
  7 {
  8     FILE *fp;
  9     char ch,filename[M];
 10     int i,j;
 11     
 12     printf("请输入文件地址和文件名\n");
 13     scanf("%s",filename);
 14     printf("请输入你想预览的字数\n");  
 15     scanf("%d",&j);
 16     
 17     if ((fp=fopen(filename,"r"))==NULL)
 18     {
 19         printf("该文件无法打开\n");
 20         print1();
 21         exit(1);
 22     }
 23     
 24     for (i=1;(ch=fgetc(fp))!=EOF;i++)
 25         {    
 26             if (i==j)
 27                 break;
 28             else
 29                 putchar(ch);
 30         }
 31     printf("\n\n");
 32 
 33     fclose(fp);
 34     print1();
 35     return 0;
 36 }                    
 37 
 38       
 39 int count( )                   //txt文件字数统计
 40 {
 41     FILE *fp;
 42     int count=0;
 43     char filename[M];
 44     
 45     printf("请输入文件所在地址和文件名\n");
 46     scanf("%s",filename);
 47 
 48     if ((fp=fopen(filename,"r"))==NULL)
 49     {
 50         printf("该文件无法打开\n");
 51         exit(1);
 52     }
 53 
 54     while (fgetc(fp)!=EOF)
 55         count++;
 56 
 57     fclose(fp);
 58     printf("\n\n\n       该文件共有%d个字符\n\n\n",count);
 59     print1();
 60     return 0;
 61 }
 62 
 63 
 64 int cut()
 65 {
 66     FILE *fp1,*output[M];
 67     int i,k,x,y,count,times;
 68     char ch,fileaddress[M],filename[M],*fileaddressname,name[M];
 69     printf("分割后的文件放在与被分割文件的同一目录下\n");
 70     printf("分割开始  请输入文件所在地址(以\\结尾)\n");
 71     scanf("%s",fileaddress);
 72     printf("请输入文件名\n");
 73     scanf("%s",filename);
 74     printf("请输你要将该文档分成的个数\n");
 75     scanf("%d",&x);
 76 
 77     if ((fp1=fopen(fileaddressname=strrev(strcat(strrev(filename),strrev(fileaddress))),"r"))==NULL)
 78     {
 79         printf("你要分割的文件无法打开1\n");
 80         exit(1);
 81     }
 82     while (fgetc(fp1)!=EOF)
 83     {count++;}
 84     y=count;
 85 
 86     fclose(fp1);
 87     printf("%d %d\n",x,y);
 88 
 89     for (i=1;i<=x;i++)
 90     {
 91         sprintf(name, "%02d.txt", i);
 92 
 93         output[i]=fopen(fileaddressname=strrev(strcat(strrev(name),fileaddress)),"w");
 94     }
 95     printf("%s",fileaddress);
 96     
 97     while ((ch=fgetc(fopen(fileaddressname=strcat(strrev(fileaddress),filename),"r")))!=EOF)
 98     {
 99         k++;
100         times=k/(y/x); 
101         fputc(ch,output[times+1]);
102     }    
103     print1();
104 
105     return 0;
106 }
107 
108 
109 void print1()
110 {
111     
112     int x;
113     printf("*******************************************************************\n");
114     printf("                ╭───────────────╮                 \n");
115     printf("  ╭══════┤    txt 文件分割器 V0.0       ├══════╮   \n");
116     printf("  ║            ╰───────────────╯            ║   \n");    
117     printf("  ║   软件介绍:                                              ║   \n");
118     printf(" ║           本软件可用于txt文件的分割                      ║   \n");
119     printf("  ║           请按照软件提示操作                             ║   \n");
120     printf(" ║   请选择功能:                                           ║   \n");
121     printf("  ║   1.预览txt文档开头     2.统计txt文档字数                ║   \n");
122     printf("  ║   3.分割txt文档         4.返回主菜单                     ║   \n");
123     printf("  ║           5.退出软件                                     ║   \n");
124     printf("  ║    ╭───────────────────────╮    ║   \n");
125     printf("  ╰══┤           王灿   2011年暑假                  ├══╯   \n");
126     printf("        ╰───────────────────────╯         \n");
127     printf("*******************************************************************\n");
128     scanf("%d",&x);
129 switch (x)
130     {
131         case 1:
132             print2();        break;
133         case 2:
134             count();        break;
135         case 3:
136                cut();          break;
137         case 4:
138             print1();           break;
139         case 5:
140             break;
141         default:
142             printf("输入错误  请选择功能前的数字\n");     break;       
143     } 
144 }
145 
146 
147 int main(void)
148 {
149     print1();
150     
151     return 0;
152 }

 

posted @ 2012-05-31 11:36  江海不系舟  阅读(408)  评论(0编辑  收藏  举报