📄 fsort.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 + -