>>147
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct { char *title, *artist, *genre;} CD_ALUBM;
CD_ALUBM alubm_table[] = {{"車輪", "BUMP OF CHICKEN", "J-POP"}, {"ズンドコ節", "氷川きよし", "演歌"},{"くるみ割り人形", "チャイコフスキー", "クラシック"},{"偶然天使", "極上生徒会執行部", "あにそん"}};
#define NUM_OF_ELEMENT(a) (sizeof(a)/sizeof(a[0]))
#define PCOMP_FUNC(M) comp_##M
#define COMP_FUNC_IMPLEMENT(MEM) int comp_##MEM(const void *a, const void *b) { return strcmp(((CD_ALUBM*)a)->MEM, ((CD_ALUBM*)b)->MEM);}
COMP_FUNC_IMPLEMENT(title)
COMP_FUNC_IMPLEMENT(artist)
COMP_FUNC_IMPLEMENT(genre)
void print_table(const CD_ALUBM *table, const size_t size, const char *title){
CD_ALUBM *p;
puts(title);
for(p = (CD_ALUBM*)table; p != table + size; ++p) printf("%s, %s, %s\n", p->title, p->artist, p->genre);
}