⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsort.cpp

📁 可能是能找到的处理速度最快
💻 CPP
字号:
#include<stdio.h>
#include<conio.h>
#include<io.h>
#include<sys\stat.h>
#include<string.h>
#include<process.h>
#include<ctype.h>
#include<stdlib.h>
#include"sort.h"
#include "filelist.h"

#define FILE_NAME_LEN	127
#define PARAMETER_COUNT	1
#define EXT_FILE_NAME1	".TMP"


void ShowUsage(void)
{
	char Usage[]="Quick sort V4.5 --- Programed by SWQ at namtek Co., Ltd. 2002-7-16\n\
    E-mail:swq1@sina.com\n\
Usage:QSort file_name[/s] [x][q][d][k][s][a][e][c:column]\r\n\
	d: Sort in decrease order, default is increase order\r\n\
	k: Keep duplicate lines, default is NOT keep\r\n\
	e: Delete Empty lines\r\n\
	s: Show duplicate lines\r\n\
	a: Save to the same file\r\n\
	c:column: reserved\n\
	q: reserved\n\
	x: reserved\n\
	/s: include files in sub directorys\n\
	The output file name will be *.TMP";
	puts(Usage);
}

int sortit(TXT_FILE &file,char *filename,int SaveToSameFile=FALSE)
{
					// Input file
	char InputFileName[FILE_NAME_LEN];
	strcpy(InputFileName,filename);
	int Len=strlen(InputFileName);
	int i=0;
	while ( (i<Len) && ( InputFileName[i]!='.' ) )
		i++;
	if (file.LoadFromFile(InputFileName)!=SUCCESS)
	{
		puts("Input file can not be opened.");
		return 1;
	}
					// ------------------- Sorting ----------------------
	if (!file.SkipRanding)
		file.Sort();
					//  output file
	char OutputFileName[FILE_NAME_LEN];
	if (SaveToSameFile)
	{
		strcpy(OutputFileName,InputFileName);
	}
	else
	{
		strncpy(OutputFileName,InputFileName,i);
		OutputFileName[i]='\0';
		strcat(OutputFileName,EXT_FILE_NAME1);
	}
	if (file.SaveToFile(OutputFileName)!=SUCCESS)
	{
		puts("Output file can not be open.");
		return 2;
	}
	return 0;
}
int  main(int argc,char *argv[])
{
		// check parameter 
	if ( argc<PARAMETER_COUNT+1 )	
	{
		ShowUsage();
		puts("Program  aborted.");
		exit(1);
	}
	int SaveToSameFile=FALSE;
	COptions file;
//	TXT_FILE file;
	if (argc>PARAMETER_COUNT+1)
	{
		if ((strchr(argv[2],'a'))||(strchr(argv[2],'A')))
			SaveToSameFile=TRUE;
		if ((strchr(argv[2],'d'))||(strchr(argv[2],'D')))
			file.IncreadOrder=FALSE;
		if ((strchr(argv[2],'k'))||(strchr(argv[2],'K')))
			file.DelDuplicate=FALSE;
		if ((strchr(argv[2],'e'))||(strchr(argv[2],'E')))
			file.NoEmptyLines=TRUE;
		if ((strchr(argv[2],'s'))||(strchr(argv[2],'S')))
			file.ShowDulpicateLines=TRUE;
		if ((strchr(argv[2],'q'))||(strchr(argv[2],'Q')))
			file.UseCache=false;
		if ((strchr(argv[2],'x'))||(strchr(argv[2],'X')))
			file.SkipRanding=false;
		char *t=strchr(argv[2],'c');
		if (t==NULL)
			t=strchr(argv[2],'C');
		if (t!=NULL)
			file.Column=atoi(&argv[2][t-argv[2]+2]);
	}
	bool Subdir=false;
	char *t=strstr(argv[1],"/s");
	if (t==NULL)
		t=strstr(argv[1],"/S");
	if (t)
	if(*(t+2)=='\0')
	{
		Subdir=true;
		*t='\0';
	}
	CFileList files(argv[1],Subdir);
	char *p=files.FirstFile();
	if (p==NULL)
		puts("No such file.");
	GlobalHeap.StartTemp();
	while(p)
	{
		{
			CMyTimer timer;
			TXT_FILE file2;
			file2=file;
			printf("File:	%s\n",p);
			sortit(file2,p,SaveToSameFile);
			p=files.NextFile();
		}
		GlobalHeap.FreeTemp();
		if (p)
			puts("");
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -