-
strcmp - 문자열 비교 함수C/문자열 함수 2020. 9. 4. 11:45
1. strcmp 함수의 사용방법
프로그램 실행결과
strcmp함수가 반환한 값이 0이면 두 문자열이 같다.
strcmp함수가 음의 정수를 반환한다는 의미는 두 문자열에 다른 문자가 존재할 뿐 아니라,
처음으로 나오는 다른 문자를 비교해보면 str1의 문자코드가 str2의 문자코드보다 작음을 의미.
쉽게 말해서, 사전 편찬 순서를 구하고 싶을 때 응용이 가능함을 알 수 있다.
apple과 banana라는 두 문자열이 있다고 하면, 어떤 문자열이 앞설수있냐면 apple이다.
사전 편찬 순서로 보면 a가 b보다 앞서기 때문이다.
2. strcmp함수의 구현
프로그램 실행결과
3. 구현한 strcmp 함수의 분석
위는 while문의 조건이다.
_Str1과 _Str2가 모두 널 문자를 가리킬 때 이 while 문을 빠져 나오게 된다.
즉, 앞에서부터 한 문자씩 비교해 나가다 둘 다 널 문자가 되었을 때 빠져 나오게 된다.
빠져나오면 이어서 맨 마지막 문장에 의해 0을 반환한다.
while 문을 빠져 나와 맨 마지막 문장까지 실행한다는 것은
두 개의 문자열이 완전히 동일하다는 것을 의미 한다. 그래서 0을 반환한다.
위의 if 조건은, 앞에서부터 한 문자씩 비교하다가
_Str1이 가리키는 문자의 아스키코드 값이 _Str2가 가리키는 문자의 아스키코드 값보다 큰 경우,
_Str2가 가리키는 문자열이 사전편찬 순서상 앞선다.
따라서, 이 때에 1을 반환한다.
위의 else if 문의 조건은,
앞에서부터 한 문자씩 비교하다가 _Str2가 가리키는 문자의 아스키코드 값이 str1이 가리키는 문자의 아스키코드 값보다 큰 경우, _Str1이 가리키는 문자열이 사전편찬 순서상 앞선다.
따라서, 이 때에 -1을 반환한다.
위의 else문은,
현재 _Str1과 _Str2가 가리키는 문자가 동일할 때 실행한다.
다음 문자를 가리키도록 str1과 str2를 하나씩 증가시킨다. 그리고 다음 비교를 준비한다.
4. 소스 파일
'C > 문자열 함수' 카테고리의 다른 글
ItoA (0) 2020.09.04 strtok (0) 2020.09.04 strcat - 문자열 붙이는 함수 (0) 2020.09.04 strcpy - 문자열을 복사하는 함수 (0) 2020.09.04 strlen - 문자열의 길이를 구하는 함수 (0) 2020.09.04