Question: #include #include #include #include #include / / Define the Record structure struct Record { char rail; uint 8 _ t club; char truck [ 1
#include
#include
#include
#include
#include
Define the Record structure
struct Record
char rail;
uintt club;
char truck;
uintt riddle;
intt crow;
uintt heat;
bool toy;
uintt volcano;
uintt achiever;
intt shoes;
uintt creator;
bool crime;
double feeling;
float idea;
uintt cherries;
double beds;
;
Comparison function for sorting records
int comparerecordsconst void a const void b
const struct Record rconst struct Recorda;
const struct Record rconst struct Recordb;
if rbeds rbeds
return rbeds rbedsrbeds rbeds;
if rcherries rcherries
return rcherries rcherriesrcherries rcherries;
if rrail rrail
return rrail rrailrrail rrail;
if rfeeling rfeeling
return rfeeling rfeelingrfeeling rfeeling;
if rcrow rcrow
return rcrow rcrowrcrow rcrow;
if rheat rheat
return rheat rheatrheat rheat;
if rriddle rriddle
return rriddle rriddlerriddle rriddle;
int truckcmp strcmprtruck, rtruck;
if truckcmp
return truckcmp;
if rvolcano rvolcano
return rvolcano rvolcanorvolcano rvolcano;
if rachiever rachiever
return rachiever rachieverrachiever rachiever;
if rtoy rtoy
return rtoy rtoyrtoy rtoy;
if rcrime rcrime
return rcrime rcrimercrime rcrime;
if ridea ridea
return ridea ridearidea ridea;
if rclub rclub
return rclub rclubrclub rclub;
if rshoes rshoes
return rshoes rshoesrshoes rshoes;
if rcreator rcreator
return rcreator rcreatorrcreator rcreator;
return ;
int mainint argc, char argv
if argc
fprintfstderr "Usage: s
argv;
return EXITFAILURE;
FILE inputfile fopenargvrb;
if inputfile
fprintfstderr "Error: Could not open input file s
argv;
return EXITFAILURE;
fseekinputfile, SEEKEND;
long filesize ftellinputfile;
rewindinputfile;
if filesize sizeofstruct Record
fprintfstderr "Error: File size is not a multiple of record size
;
fcloseinputfile;
return EXITFAILURE;
sizet numrecords filesize sizeofstruct Record;
struct Record records struct Recordmallocnumrecords sizeofstruct Record;
if records
fprintfstderr "Error: Memory allocation failed
;
fcloseinputfile;
return EXITFAILURE;
for sizet i ; i numrecords; i
fread&recordsirail, sizeofchar inputfile;
fread&recordsiclub, sizeofuintt inputfile;
freadrecordsitruck, sizeofchar inputfile;
recordsitruck;
fread&recordsiriddle, sizeofuintt inputfile;
fread&recordsicrow, sizeofintt inputfile;
fread&recordsiheat, sizeofuintt inputfile;
fread&recordsitoy, sizeofbool inputfile;
fread&recordsivolcano, sizeofuintt inputfile;
fread&recordsiachiever, sizeofuintt inputfile;
fread&recordsishoes, sizeofintt inputfile;
fread&recordsicreator, sizeofuintt inputfile;
fread&recordsicrime, sizeofbool inputfile;
fread&recordsifeeling, sizeofdouble inputfile;
fread&recordsiidea, sizeoffloat inputfile;
fread&recordsicherries, sizeofuintt inputfile;
fread&recordsibeds, sizeofdouble inputfile;
fcloseinputfile;
qsortrecords numrecords, sizeofstruct Record comparerecords;
FILE outputfile fopenargvwb;
if outputfile
fprintf
