求大神帮忙看看程序怎么错了,写了几天了,老是不对,不能出结果,可以的话帮忙调一哈,谢谢!
程序 的目的是为了将文本head.txt中许多行的汉字(每行汉字个数不等但不超过⑤个)行与行之间进行比较(每个汉字看成两个字符)重新排序输出到headsort.txt文本中,希望高手能帮我看看怎么改,调了几天了还是不行!#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#define LINE 1024
int cout()
{
unsigned int s,get,rc;
FILE *fp;
fp=fopen("head.txt","r");
if(fp==NULL)
{
printf("cannot find file\n");
exit(0);
}
rc=0;
s=0;
while((get=fgetc(fp))!=EOF)
{
if((char)get=='\n')
{
rc=ftell(fp);
s++;
}
rc++;
}
fclose(fp);
return s;
}
void main()
{
char str[100000000][20],*temp;
temp=str[0];
unsigned int rc,i,j,get,k,h;
FILE *fp,*fp1;
fp=fopen("head.txt","r");
fp1=fopen("headsort.txt","w");
//printf("%d\n",k);
k=cout();
get=fgetc(fp);
for(i=0;i<=k,get!=EOF;i++)
{
for(j=0;(char)get!='\n';j++)
{
//rc=ftell(fp);
//rc--;
str[i][j]=fgetc(fp);
}
}
for(i=0;i<=k;i++)
{ for(j=0;j<k-i;j++)
{
for(h=0;str[i]!='\0';h++)
{
if(strcmp(str[i],str[i++])>0)
{
for(h=0;h<10;h++)
{
*temp=str[i][h];
str[i][h]=str[i++][h];
str[i++][h]=*temp;
}
}
}
}
}
for(i=0;i<=k;i++)
{
fseek(fp,strlen(str[i]),0);
fwrite(&str[i],strlen(str[i]),1,fp1);
/*for(h=0;;h++)
{
fputc(str[i][h],fp1);
if(h==(strlen(str[i])))
{
fputc('\n',fp1);
break;
}
}*/
}
}
[ 本帖最后由 南庭 于 2013-12-22 13:33 编辑 ]