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

strncmp 함수

                   이번에는 strncmp 함수입니다. 이 함수도 strcmp 함수와 마찬가지로 문자열을 비교합니다.
                   strcmp 함수는 문자열의 길이를 지정하여 비교할 수 없었지만 strncmp 함수는 3번째 인수
                   로 지정한 문자열의 길이만큼만 비교할 수 있습니다. 또한 널 문자가 없는 ‘문자 배열’ 간의 비
                   교도 가능합니다.


                             strncmp 함수

                    헤더       #include <string.h>
                    형식       int strncmp(const char *s1, const char *s2 size_t n);
                             s1, s2가 가리키는 문자 배열에서 n번째 문자까지의 대소 관계를 비교합니다. 처음부터 순서대로 한 문자
                    해설
                             씩 unsigned char형 값으로 비교합니다. 널 문자 이후의 비교는 하지 않습니다.
                    반환값      문자 배열이 같으면 0, s1이 s2보다 크면 양의 정수 값, 작으면 음의 정수 값을 반환합니다.


                   그림 8-8은 strncmp 함수로 두 문자열, "STRING"과 "STRIKE"를 비교한 그림입니다.  a  는

                   처음 3개의 문자를 비교한 경우이고,  b 는 처음 5개의 문자를 비교한 경우입니다.


                    a  처음 3개의 문자를 비교한 경우     0  1  2  3  4  5  6  7  8  9
                                             S T R  I  N G  Ø         strncmp("STRING", "STRIKE", 3);
                                                                      strncmp 함수의 반환값은 0입니다(일
                                             S T R  I  K E  Ø         치함).
                                             0  1  2  3  4  5  6  7  8  9
                    b  처음 5개의 문자를 비교한 경우     0  1  2  3  4  5  6  7  8  9
                                             S T R  I  N G  Ø         strncmp("STRING", "STRIKE", 5);
                                                                      strncmp 함수의 반환값은 0이 아닌 값입
                                             S T R  I  K E  Ø         니다(일치하지 않음).
                                             0  1  2  3  4  5  6  7  8  9
                                           [그림 8-8] strncmp 함수를 사용한 문자열의 비교


                   실습 8-11은 strncmp 함수를 사용한 프로그램입니다. 이 프로그램은 문자열 "STRING"과
                   배열 st로 읽어 들인 문자열에서 처음부터 3개의 문자를 비교한 결과를 출력합니다.


                     실습 8-11                                             •완성 파일 chap08/strncmp_test.c
                     01  /* 문자열을 비교하는 프로그램(strncmp 함수 사용) */
                                                                              실행 결과
                     02  #include <stdio.h>
                                                                     "STRING"의 처음 3개의 문자와 비교합니다.
                     03  #include <string.h>                         "XXXX"를 입력하면 종료합니다.
                     04                                              문자열 st : STAR
                                                                     strncmp("STRING", st, 3) = 17
                     05  int main (void)                             문자열 st : STRIKE
                     06  {                                           strncmp("STRING", st, 3) = 0
                                                                     문자열 st : XXXX

                   318   C 알고리즘
   313   314   315   316   317   318   319   320   321   322   323