对字符串快速排序解决方案
对字符串快速排序
要求根据选择结构体中的元素作为关键字对Record进行排序,不知道哪里出了问题,请大家帮帮我!
=======================================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
typedef struct record{
char title[N]; /* 主标题名 */
char subtitle[N]; /* 副标题名*/
char date[N]; /* 完成日期 */
char path[N]; /* 存放路径 */
char classfication[N]; /* 文件分类 */
}Record;
Record data[N];
int sort_data(Record *recd, int start, int count); // 快速排序
int display(Record *recd, int count); // 向屏幕输出函数
int main()
{
int m;
FILE *fp_read;
fp_read = fopen( "12-003.txt ", "r ");
if(fp_read == NULL){
printf( "Can not open file!\n ");
return -1;
}
/* 从 文件读如数据 */
for(m=0; m <10; m++){
fscanf(fp_read, "%s\t ", data[m].title);
fscanf(fp_read, "%s\t ", data[m].subtitle);
fscanf(fp_read, "%s\t ", data[m].date);
fscanf(fp_read, "%s\t ", data[m].path);
fscanf(fp_read, "%s\n ", data[m].classfication);
}
int count = m;
count = display(data,count);
count = sort_data(data,0,count);
count = display(data,count);
fclose(fp_read);
return 0;
}
int display(Record *recd, int count)
{
int i = 0;
while(i < count){
printf( "%d ", ++i);
printf( "%s ", recd -> title);
printf( "%s ", recd -> subtitle);
printf( "%s ", recd -> date);
要求根据选择结构体中的元素作为关键字对Record进行排序,不知道哪里出了问题,请大家帮帮我!
=======================================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
typedef struct record{
char title[N]; /* 主标题名 */
char subtitle[N]; /* 副标题名*/
char date[N]; /* 完成日期 */
char path[N]; /* 存放路径 */
char classfication[N]; /* 文件分类 */
}Record;
Record data[N];
int sort_data(Record *recd, int start, int count); // 快速排序
int display(Record *recd, int count); // 向屏幕输出函数
int main()
{
int m;
FILE *fp_read;
fp_read = fopen( "12-003.txt ", "r ");
if(fp_read == NULL){
printf( "Can not open file!\n ");
return -1;
}
/* 从 文件读如数据 */
for(m=0; m <10; m++){
fscanf(fp_read, "%s\t ", data[m].title);
fscanf(fp_read, "%s\t ", data[m].subtitle);
fscanf(fp_read, "%s\t ", data[m].date);
fscanf(fp_read, "%s\t ", data[m].path);
fscanf(fp_read, "%s\n ", data[m].classfication);
}
int count = m;
count = display(data,count);
count = sort_data(data,0,count);
count = display(data,count);
fclose(fp_read);
return 0;
}
int display(Record *recd, int count)
{
int i = 0;
while(i < count){
printf( "%d ", ++i);
printf( "%s ", recd -> title);
printf( "%s ", recd -> subtitle);
printf( "%s ", recd -> date);