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 }
  • 相关阅读:
    pt-tcp-model
    (转)从史上八大MySQL宕机事故中学到的经验
    pt-query-digest
    DNS生效时间
    Python之uuid模块
    一个IO的传奇一生
    Python之Queue模块
    利用freemarker 静态化网页
    FreeMarker教程
    模板引擎freemarker的简单使用教程
  • 原文地址:https://www.cnblogs.com/wangcan/p/2528160.html
Copyright © 2011-2022 走看看