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