为什么小弟我这个不能对文件进行排序

为什么我这个不能对文件进行排序
void sort()
{
   int i,k,j;
   struct car_type temp;
   if((fp = fopen("car.dat","rb"))==NULL)
   {
       printf("不能打开文件\n");
       system("pause");
       return;
   }
   for(i = 0;i<car[0].sum-1;i++)
   {
         k = i;
         fread(&car[i],sizeof(struct car_type),1,fp);
         for(j = i+1;j<car[0].sum;j++)
         {
               if(car[k].price>car[j].price)
               {
                    k = j;
                    if(k != i)
                    {
                         temp.num = car[i].num;
                         temp.name = car[i].name;
                         temp.age = car[i].age;
                         temp.price = car[i].price;
                         car[i].num = car[k].num;
                         car[i].name = car[k].name;
                         car[i].age =  car[k].age;
                         car[i].price = car[k].price;
                         car[k].num = temp.num;
                         car[k].name = temp.name;
                         car[k].age = temp.age;
                         car[k].price = temp.price;
                    }
               }
         }

   }
   printf("排序成功\n");
   system("pause");
   save();
}

------解决方案--------------------
这...
你不知道读出排序后
在写入吗

你那个代表不了文件
不能直接操作

程序有误
------解决方案--------------------
读出排序后
在写入
------解决方案--------------------
1. 吧读取和排序分开,否则你现在排序时,后面的还没读入
2. 排序
3. 把排序结果写成文件输出