文件排序(不明白在哪错了)
一个输入文件如:input.txt
xfg
der
sdfg
输出文件为:ouput.txt
der
sdfg
xfg
按ASCII码排序
这是我的程序,不知在哪错了,得不到正确结果,请高手执教。
#include <stdio.h>
int main()
{
FILE *F_inputFile,*F_outputFile;
char ach_tmp[1024],ach_cmp[1024],ach_swap[1024];
int i_cmp=1,i_switch=1,i_flag=0,i_first=0;
F_inputFile = NULL;
F_outputFile = NULL;
memset(ach_tmp,'\0',1024);
memset(ach_cmp,'\0',1024);
if(NULL == (F_inputFile = fopen("\input.txt","rt")))
{
printf("open file error\n");
}
if(NULL ==(F_outputFile = fopen("\output.txt","wt")))
{
printf("create a file error\n");
}
while(NULL!=fgets(ach_tmp,1024,F_inputFile))
{
i_cmp=1,i_switch=1,i_flag=0;
if(NULL==(F_outputFile=fopen("\output.txt","rt",F_outputFile)))
{
printf("reopen file error\n");
}
rewind(F_outputFile);
while(NULL!=fgets(ach_cmp,1024,F_outputFile))
{
if(strcmp(ach_tmp,ach_cmp)<0)
{
break;
}
i_cmp++;
}
strcpy(ach_swap,ach_tmp);
fclose(F_outputFile);
F_outputFile=fopen("\output.txt","rt+",F_outputFile);
rewind(F_outputFile);
while(NULL!=fgets(ach_cmp,1024,F_outputFile))
{
if(1==i_flag)
{
rewind(F_outputFile);
fseek(F_outputFile,(i_switch-1)*1024L,0);
printf("1%s\n",ach_swap);
fputs(ach_swap,F_outputFile);
strcpy(ach_swap,ach_cmp);
}
if(i_cmp==i_switch)
{
strcpy(ach_swap,ach_cmp);
rewind(F_outputFile);
fseek(F_outputFile,(i_switch-1)*1024L,0);
printf("2%s\n",ach_tmp);
fputs(ach_tmp,F_outputFile);
i_flag=1;
}
memset(ach_cmp,'\0',1024);
fclose(F_outputFile);
F_outputFile=fopen("\output.txt","rt+",F_outputFile);
rewind(F_outputFile);
fseek(F_outputFile,i_switch*1024L,0);
i_switch++;
}
if(NULL==fgets(ach_cmp,1024,F_outputFile))
{
//fclose(F_outputFile);
F_outputFile=freopen("\output.txt","at+",F_outputFile);
rewind(F_outputFile);
fseek(F_outputFile,0L,2);
printf("3%s\n",ach_swap);
fputs(ach_swap,F_outputFile);
fclose(F_outputFile);
memset(ach_cmp,'\0',1024);
}
memset(ach_tmp,'\0',1024);
}
fclose(F_inputFile);
}