Page 127 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 127

19  {
                         20     Person x[] = {                      /* 배열 요소는 이름의 오름차순으로 */
                         21       { "김영준", 179, 79 },              /* 정렬되어 있지 않으면 안 됩니다. */
                         22       { "박현규", 172, 63 },
                         23       { "이수진", 176, 52 },
                         24       { "최윤미", 165, 51 },
                         25       { "함진아", 181, 73 },
                         26       { "홍연의", 172, 84 },
                         27     };
                         28     int nx = sizeof(x) / sizeof(x[0]);     /* 배열 x의 요소 개수 */
                         29     int retry;
                         30     puts("이름으로 검색합니다.");
                         31     do {
                         32      Person temp, *p;
                         33      printf("이름 : ");
                         34      scanf("%s", temp.name);
                         35      p = bsearch(&temp, x, nx, sizeof(Person),
                         36          (int(*)(const void *, const void *)) npcmp);
                         37      if(p == NULL)
                         38        puts("검색에 실패했습니다.");
                         39      else {
                         40        puts("검색 성공 !! 아래 요소를 찾았습니다.");
                         41        printf("x[%d] : %s %dcm %dkg\n",
                         42          (int)(p - x), p->name, p->height, p->weight);
                         43      }
                         44      printf("다시 검색할까요?(1) 예 /(0) 아니오 : ");
                         45      scanf("%d", &retry);
                         46    } while(retry == 1);
                         47
                         48    return 0;
                         49  }



                        구조체 Person은 {이름, 키, 몸무게의 멤버}로 구성되어 있습니다. Person을 자료형으로 하
                        는 배열이 검색 대상인 x입니다. 배열 x의 요소는 이름인 멤버 name을 기준으로 오름차순으
                        로 정렬하면서 초기화합니다.                              요소의 순서는 이름의 알파벳 순서로 되어 있습니다.


                        비교 함수 npcmp는 두 문자열 x->name과 y->name의 대소 관계를 strcmp 함수를 호출하
                        여 비교합니다. strcmp 함수가 반환하는 값은 다음과 같습니다.






                                                                                          03•검색  127
   122   123   124   125   126   127   128   129   130   131   132