質問: NULL ) { printf( "ファイルがオープンできません\n"); exit( 1 ); } for(i=0; idata_t[i].tm_year,&lst->data_t[i].tm_mon, &lst->data_t[i].tm_mday, &lst->data_t[i].tm_hour,&lst->data_t[i].tm_min,&lst->data_t[i].tm_sec,&lst[i].score )!= 7) break; (count)++; return count; } int n=sizeof(lst)/sizeof(tim_t); qsort( lst,n, sizeof(tim_t), cmp ); printf("\n------------実行時間の短い順にソ\ートします。--------------\n\n"); for(i=0; igcc -I. -o narabekae1 narabekae1.c -Wall C:\MinGW\users\chap09\kadai> narabekae count1:13 2017年 9月 16日 8時 52分 18秒 所要時間(score)は10.6 2015年 12月 7日 19時 59分 8秒 所要時間(score)は8.0 2016年 1月 4日 1時 9分 11秒 所要時間(score)は7.5 2016年 1月 4日 19時 16分 8秒 所要時間(score)は9.0 2016年 1月 4日 19時 2分 44秒 所要時間(score)は7.5 2016年 1月 4日 22時 31分 52秒 所要時間(score)は9.3 2016年 1月 4日 23時 33分 50秒 所要時間(score)は10.2 2016年 1月 31日 21時 9分 53秒 所要時間(score)は7.0 2016年 2月 2日 8時 49分 9秒 所要時間(score)は9.4 2016年 2月 27日 12時 45分 26秒 所要時間(score)は13.0 2016年 2月 28日 2時 27分 20秒 所要時間(score)は7.4 2016年 5月 2日 16時 43分 32秒 所要時間(score)は6.3 2017年 9月 14日 10時 21分 18秒 所要時間(score)は6.0 実行時間の短い順にソートします。 3917年 10月 14日 10時 21分 18秒 ....年、月の表示がおかしい 所要時間(score):6.0 3916年 6月 2日 16時 43分 32秒 所要時間(score):6.3 3916年 2月 31日 21時 9分 53秒 所要時間(score):7.0 3916年 3月 28日 2時 27分 20秒 所要時間(score):7.4 3916年 2月 4日 1時 9分 11秒 所要時間(score):7.5 3916年 2月 4日 19時 2分 44秒 所要時間(score):7.5 3915年 13月 7日 19時 59分 8秒 所要時間(score):8.0 3916年 2月 4日 19時 16分 8秒 所要時間(score):9.0 3916年 2月 4日 22時 31分 52秒 所要時間(score):9.3 3916年 3月 2日 8時 49分 9秒 所要時間(score):9.4 3916年 2月 4日 23時 33分 50秒 所要時間(score):10.2 3917年 10月 16日 8時 52分 18秒 所要時間(score):10.6 3916年 3月 27日 12時 45分 26秒 所要時間(score):13.0 count2:13 count3は13 C:\MinGW\users\chap09\kadai> */ ```
回答: ご提示のソースを参考にqsortを使い作成してみました。構造体の定義を変えておりますのでご参考です。 ``` #include #include #include #define MAXCNT 100 char dtfile[] = "LACKNUM.DAT"; typedef struct{ int tm_year; int tm_mon; int tm_mday; int tm_hour; int tm_min; int tm_sec; double score; }local; // --------------- 比較用の関数 cmp ------------------- int cmp( const void *p, const void *q ) { double p_score = ((local*)p)->score; double q_score = ((local*)q)->score; if (p_score > q_score) return 1; else if(p_score < q_score) return -1; else return 0; } // ---------------------------------------------------- int main(void) { int i,count,n; FILE *fp; local lst[MAXCNT]; // 構造体の宣言 local data_t[MAXCNT]; if( (fp = fopen(dtfile, "rb" )) == NULL ) { printf( "ファイルがオープンできません\n"); exit( 1 ); } i=count=0; while (fscanf(fp,"%d %d %d %d %d %d %lf" // 構造体配列への読み込み , &lst[i].tm_year,&lst[i].tm_mon,&lst[i].tm_mday, &lst[i].tm_hour,&lst[i].tm_min,&lst[i].tm_sec, &lst[i].score )!= EOF){ i++; count++; } n=count; qsort( lst,n, sizeof(local), cmp ); printf("\n------------実行時間の短い順にソートします。--------------\n\n"); for(i=0; i