排序问题
程序代码:#include "top.h"
/*按价格排序*/
void sort_pri()
{
FILE *fp1;
int i,j;
books *b;
books temp;
float n1,n2;
b = (books *)calloc(count, sizeof(books)); //初始化数组
if( (fp1 = fopen("books.dat", "rb")) == NULL)
{
printf("打开失败!");
exit(0);
}
count = 0;
fread(&temp,sizeof(books),1,fp1);
while( fread(&temp,sizeof(books),1,fp1) != 0 )
{
count++;
}
fseek(fp1,0,0);
for( i = 0; i < count; i++)
fread(&b[i],sizeof(books),1,fp1);
for( i = 0; i < count - 1; i++ )
for( j = 0; j < count - i - 1; j++)
{
n1 = (float)atof(b[j].price);
n2 = (float)atof(b[j + 1].price);
if( n1 > n2 )
{
temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
}
}
printf("\n\t\t\t\t排序后的书目\n");
display();
for( i = 0; i < count; i++ )
{
printf("%-8ld%-12s%-12s%-8d%-24s%-10d%-s\n",b[i].record_num,b[i].book_name,b[i].author_name,b[i].classify_num,b[i].publish_add,b[i].publish_data,b[i].price);
}
getch();
fclose(fp1);
free(b);
}
books 数据结构,图书类型
count 图书数目
各位大虾,请帮忙看一下这段代码。。。。
这段代码,能调试,也能运行,可是在完成排序之后,系统却提示错误。。。
可是如果我不加一下这段代码
程序代码: count = 0;
fread(&temp,sizeof(books),1,fp1);
while( fread(&temp,sizeof(books),1,fp1) != 0 )
{
count++;
}
fseek(fp1,0,0);那么程序运行与排序没有问题,可是却不能统计图书数目,造成没有任何信息输出。。。谢谢了,帮忙看看错在哪里。。






