为什么小弟我这个不能对文件进行排序
为什么我这个不能对文件进行排序
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. 把排序结果写成文件输出
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. 把排序结果写成文件输出