我需要在程序ShellSort方法中将处理文件的方法更改为Selection Sort,也需要处理文件的方法。
我不明白如何使用文件和文件中的“ b”。
void Sortare_Shell(void)
{
int i,k,n,step;
f = fopen("firme.txt","r+");
for(i = 0; fread(&parf[0], sizeof(parf[0]), 1, f); n++);
for(step = n/2; step > 0; step /= 2)
for(i = step; i < n; i++)
{
fseek(f, (i - step) * sizeof(parf[0]), SEEK_SET);
fread(&parf[0], sizeof(parf[0]), 1, f);
fseek(f, i * sizeof(parf[1]), SEEK_SET);
fread(&parf[1], sizeof(parf[1]), 1, f);
for(k = i - step; k >= 0 && parf[0].volum > parf[1].volum; k -= step)
{
fseek(f, k * sizeof(parf[1]), SEEK_SET);
fwrite(&parf[1], sizeof(parf[1]), 1, f);
fseek(f, (k + step) * sizeof(parf[0]), SEEK_SET);
fwrite(&parf[0], sizeof(parf[0]), 1, f);
if( (k - step) >= 0 )
{
fseek(f, (k - step) * sizeof(parf[0]), SEEK_SET);
fread(&parf[0], sizeof(parf[0]), 1, f);
fseek(f, k * sizeof(parf[1]), SEEK_SET);
fread(&parf[1], sizeof(parf[1]), 1, f);
}
}
}
fclose(f);
printf("\n Sortarea s-a finisat \n");
}