#include #include /* 動物型の定義 */ typedef struct { char *name; // 動物名 int legs; // 足の本数 } Animal; /* 足の本数によって分類表示する関数(配列版) */ int QueryA(Animal data[], int legs) { int i = 0; // 要素番号 int n = 0; // 一致件数 while (data[i].name != NULL) { if (data[i].legs == legs) { printf("%s\n", data[i].name); n++; } i++; } return (n); } /* 足の本数によって分類表示する関数(ポインタ版) */ int QueryP(Animal *data, int legs) { int n = 0; // 一致件数 while (data->name != NULL) { if (data->legs == legs) { printf("%s\n", data->name); n++; } data++; } return (n); } /* メイン関数 */ int main() { Animal data[] = { {"ヒト", 2}, {"イヌ", 4}, {"ニワトリ", 2}, {"ゴキブリ", 6}, {"クモ", 8}, {"ヒツジ", 4}, {"ヘビ", 0}, {"カニ", 8}, {NULL, -1} // 番兵(終端記号) }; int legs; int n; while (1) { printf("足の本数 > "); if (scanf("%d", &legs) == EOF) break; n = QueryA(data, legs); // 配列版 // n = QueryP(data, legs); // ポインタ版 printf("(%d 件)\n\n", n); } return (EXIT_SUCCESS); }