|
|
#include #include #include struct mi { int no; char *nom; } mois[] = { { 1, "jan" }, { 2, "fév" }, { 3, "mar" }, { 4, "avr" }, { 5, "mai" }, { 6, "jun" }, { 7, "jui" }, { 8, "aoû" }, { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "déc" } }; #define nb_de_mois (sizeof(mois)/sizeof(mois[0])) static int compmi(const void *m1, const void *m2) { struct mi *mi1 = (struct mi *) m1; struct mi *mi2 = (struct mi *) m2; return strcmp(mi1->nom, mi2->nom); } int main(int argc, char **argv) { int i; qsort(mois, nb_de_mois, sizeof(struct mi), compmi); for (i = 1; i < argc; i++) { struct mi key, *res; key.nom = argv[i]; res = bsearch(&key, mois, nb_de_mois, sizeof(struct mi), compmi); if (res == NULL) printf("'%s' : mois inconnu\n", argv[i]); else printf("%s : mois N°%d\n", res->nom, res->no); } exit(EXIT_SUCCESS); }
|
|
|
#include #include #include struct mi { int nr; char *name; } months[] = { { 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" }, { 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" }, { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" } }; #define nr_of_months (sizeof(months)/sizeof(months[0])) static int compmi(const void *m1, const void *m2) { struct mi *mi1 = (struct mi *) m1; struct mi *mi2 = (struct mi *) m2; return strcmp(mi1->name, mi2->name); } int main(int argc, char **argv) { int i; qsort(months, nr_of_months, sizeof(struct mi), compmi); for (i = 1; i < argc; i++) { struct mi key, *res; key.name = argv[i]; res = bsearch(&key, months, nr_of_months, sizeof(struct mi), compmi); if (res == NULL) printf("'%s': unknown month\n", argv[i]); else printf("%s: month #%d\n", res->name, res->nr); } exit(EXIT_SUCCESS); }
|