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

문자열 비교

                   C 언어는 두 문자열의 대소 관계를 판단하는 표준 라이브러리 함수로 strcmp 함수와
                   strncmp 함수를 제공합니다. 그러면 이 함수에 대해 자세히 알아보겠습니다. 계속해서 문자
                   열을 다루는 함수에 대해 살펴보는 것이 지루하게 느껴질 수도 있을 것입니다. 하지만 문자열

                   을 다루는 실용적인 프로그램을 만들기 위해서는 이런 함수에 대해 확실히 이해하고 있어야 합
                   니다. 특히 strcmp 함수는 09장의 선형 리스트와 10장의 이진트리 프로그램에서 사용합니다.



                   strcmp 함수
                   먼저 알아볼 함수는 strcmp 함수입니다.


                             strcmp 함수
                    헤더       #include <string.h>
                    형식       int strcmp(const char *s1, const char *s2);

                             s1, s2가 가리키는 문자열의 대소 관계를 비교합니다. 처음부터 순서대로 한 문자씩 unsigned char형 값
                    해설
                             으로 비교합니다.
                    반환값      문자열이 같으면 0, s1이 s2보다 크면 양의 정수, 작으면 음의 정수 값을 반환합니다.



                   그림 8-7을 보면 두 문자열을 처음부터 순서대로 비교하고 있습니다. 이때  a  와 같이 모든
                   문자가 일치하면 0을 반환합니다. 하지만  b  와 같이 문자를 비교하는 도중에 하나의 문자라
                   도 다르면 두 문자열은 일치하지 않음을 알 수 있습니다. 따라서 0이 아닌 값을 반환합니다.

                   반환하는 값은 문자 코드 체계와 컴퓨터 환경에 따라 다릅니다. 다음 그림을 보면 5번째 문자
                   'N'과 'K'가 일치하지 않습니다.


                    a  문자열이 일치하는 경우          0  1  2  3  4  5  6  7  8  9
                                             S T R  I  N G  Ø    strcmp("STRING", "STRING");

                                             S T R  I  N G  Ø    strcmp 함수의 반환값은 0입니다.
                                             0  1  2  3  4  5  6  7  8  9


                    b  문자열이 일치하지 않는 경우       0  1  2  3  4  5  6  7  8  9
                                             S T R  I  N G  Ø    strcmp("STRING", "STRIKE");
                                             S T R  I  K E  Ø    strcmp 함수의 반환값은 0이 아닌 값입니다.
                                             0  1  2  3  4  5  6  7  8  9

                                        [그림 8-7] strcmp 함수를 사용한 문자열의 비교


                   strcmp 함수는 문자 코드 체계에 따라 문자열을 비교합니다. 그래서 strcmp 함수가 반환하




                   316   C 알고리즘
   311   312   313   314   315   316   317   318   319   320   321