排序问题
程序代码:
#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);那么程序运行与排序没有问题,可是却不能统计图书数目,造成没有任何信息输出。。。
谢谢了,帮忙看看错在哪里。。