사용범위
Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수
기능
C언어 표준 함수로 문자열을 비교할때 사용한다.
헤더
#include <string.h>
※ strcmp 함수 사용시 string.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※
함수
int strcmp(const char* str1, const char* str2);
파라미터
- const char* str1
- 비교할 첫번째 문자열을 입력한다.
- NULL 문자로 종료되는 문자열이 들어가는것이 좋다.
- const char* str2
- 비교할 두번째 문자열을 입력한다.
- NULL 문자로 종료되는 문자열이 들어가는것이 좋다.
반환값 (return)
-1 : string1 이 string2 보다 작은 경우 ( str1 < str2 )
0 : string1 과 string2 가 동일한 경우 ( str1 == str2 )
1 : string1 이 string2 보다 큰 경우 ( str1 > str2 )
0 인 경우 두 문자열이 동일하다.
0 이 아닌 경우 두 문자열은 서로 다르다.
잡학지식
strcmp 함수는 비교하는 문자열의 끝을 NULL 문자로 확인하기 때문에 앞에 몇글자만 비교하는 기능을 사용하기에 적절하지 않다.
따라서 문자열의 특정 부분만 비교를 하는 경우에는 strncmp 를 사용하는것을 권장한다.
만약 NULL 문자를 포함해서 데이터를 비교해야 하는 상황에서는 memcmp 함수를 사용하는것을 권장한다.
<소스 코드>
#include <stdio.h>
#include <string.h>
int main() {
char buffer1[8] = {0,};
char buffer2[8] = {0,};
char buffer3[8] = {0,};
char buffer4[8] = {0,};
int ret;
strcpy(buffer1, "abcd");
strcpy(buffer2, "abc");
strcpy(buffer3, "abc");
strcpy(buffer4, "ABC");
// abcd, abc
ret = strcmp(buffer1, buffer2);
printf("strcmp(abcd, abc) = %d\n", ret);
// abc, abcd
ret = strcmp(buffer2, buffer1);
printf("strcmp(abc, abcd) = %d\n", ret);
// abc, abc
ret = strcmp(buffer2, buffer3);
printf("strcmp(abc, abc) = %d\n", ret);
// abc, ABC
ret = strcmp(buffer3, buffer4);
printf("strcmp(abc, ABC) = %d (a=%d, A=%d)\n", ret, 'a', 'A');
return 0;
}
※ 실행 결과
strcmp(abcd, abc) = 1
strcmp(abc, abcd) = -1
strcmp(abc, abc) = 0
strcmp(abc, ABC) = 1 (a=97, A=65)
abc 와 ABC 를 비교했을때 strcmp 의 결과값이 1이 나온 이유는 ASCII 코드 기준으로 비교해보면 a 가 A 보다 더 큰 값이기 때문이다. (a = 97, A = 65)
반응형
'C언어 > string.h' 카테고리의 다른 글
[C언어] memccpy 함수 (특정 문자까지만 메모리 복사) (1) | 2022.09.16 |
---|---|
[C언어] strcat 함수 (문자열 연결) (0) | 2022.09.15 |
[C언어] strlen 함수 (문자열 길이 확인 함수) (0) | 2022.09.14 |
[C언어] strstr 함수 (문자열 검색 함수) (8) | 2022.09.14 |
[C언어] strcpy 함수 (문자열 복사, string copy) (0) | 2022.09.09 |