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 알고리즘