エラー sort_structs_time。struct と qsort を使用してユーザー入力を受け入れて保存するプログラム。名、姓、国、時間。出力は qsort を使用して時間通りにソートする必要があります。
入力
BEKELE タリク ETH 27:31.43
RUPP Galen アメリカ 27:30.90
FARAH モ GB 27:30.42
出力
FARAH モ GB 27:30.42
RUPP Galen アメリカ 27:30.90
BEKELE タリク ETH 27:31.43
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct olympics {
//char athlete[25];
char fname[15];
char lname[15];
char country[5];
float time;
};
/* qsort struct comparision function (time float field) */
int struct_cmp_by_time(const void *a, const void *b)
{
struct olympics *ia = (struct olympics *)a;
struct olympics *ib = (struct olympics *)b;
return (int)(60.f*ia->time - 60.f*ib->time);
}
/* struct array printing function */
void print_struct_array(struct olympics *array, size_t len)
{
size_t i;
for(i=0; i<len; i++)
printf("%s %s %s \t %.2f\n", array[i].fname, array[i].lname, array[i].country, array[i].time);
puts("****");
}
/* sorting structs using qsort() */
void sort_structs_time(void)
{
struct olympics structs[] = {
scanf("%s %s %s %.2f\n", fname, lname, country, &time)
};
size_t structs_len = sizeof(structs) / sizeof(struct olympics);
puts("**** Athletes finishing time...");
/* print original struct array */
print_struct_array(structs, structs_len);
/* sort array using qsort functions */
qsort(structs, structs_len, sizeof(struct olympics), struct_cmp_by_time);
/* print sorted struct array */
print_struct_array(structs, structs_len);
}
/* call to the function) */
int main()
{
/* run the function */
sort_structs_time();
return 0;
}