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

는 값도 컴퓨터 환경에 종속적입니다. 예를 들어, 'N'이 'K'보다 큰 경우 1을 반환하는 컴퓨터

                        환경도 있고 문자 코드 값의 차이인 'N' - 'K'의 값을 그대로 계산하여 반환하는 컴퓨터 환경
                        도 있습니다.


                        실습 8-10은 strcmp 함수와 동일하게 동작하는 문자열 비교 함수를 작성한 프로그램입니다.


                          실습 8-10                                                •완성 파일 chap08/str_cmp.c

                         01  /* 문자열을 비교하는 프로그램 */
                                                                                     실행 결과
                         02  #include <stdio.h>
                                                                               "ABCD"와 비교합니다.
                         03
                                                                               "XXXX"면 종료합니다.
                         04  /*--- 두 문자열 s1과 s2를 비교하는 함수 ---*/                 문자열 st : AX
                         05  int str_cmp (const char *s1, const char *s2)      str_cmp("ABCD", st) = -22
                         06  {                                                 문자열 st : AA
                         07    while(*s1 == *s2) {                             str_cmp("ABCD", st) = 1
                                                                               문자열 st : ABCD
                         08      if(*s1 == '\0')    /* 같음 */
                                                                               str_cmp("ABCD", st) = 0
                         09        return 0;
                                                                               문자열 st : XXXX
                         10      s1++;
                         11      s2++;
                         12    }
                         13    return (unsigned char)*s1 - (unsigned char)*s2;
                         14  }
                         15  int main (void)
                         16  {
                         17    char st[128];
                         18    puts("\"ABCD\"와 비교합니다.");
                         19    puts("\"XXXX\"면 종료합니다.");
                         20    while(1) {
                         21      printf("문자열 st : ");
                         22      scanf("%s", st);
                         23      if(str_cmp("XXXX", st) == 0)
                         24        break;
                         25      printf("str_cmp(\"ABCD\", st) = %d\n", str_cmp("ABCD", st));
                         26    }
                         27
                         28    return 0;
                         29  }



                        이 프로그램은 문자열 "ABCD"와 입력한 문자열을 비교합니다. strcmp 함수와 마찬가지로
                        두 문자열이 다를 때 위의 str_cmp 함수가 반환하는 값은 문자 코드 체계에 따라 다릅니다.



                                                                                      08•문자열 검색  317
   312   313   314   315   316   317   318   319   320   321   322