zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    .NET XmlNavigator with Namespace
    编程要素
    【FOJ】1962 新击鼓传花游戏
    【POJ】1389 Area of Simple Polygons
    【POJ】2482 Stars in Your Window
    【HDU】3265 Posters
    【HDU】1199 Color the Ball
    【HDU】3642 Get The Treasury
    【HDU】4027 Can you answer these queries?
    【HDU】1542 Atlantis
  • 原文地址:https://www.cnblogs.com/wangcan/p/2528160.html
Copyright © 2011-2022 走看看