반응형
strncasecmp(3)
#include <string.h>
int strncasecmp(const char *s1, const char *s2, size_t n);
s1, s2 두 문자열의 내용을 1바이트씩 unsigned char로 크고 작음을 최대 n바이트까지 비교합니다.
두 문자열이 1바이트 씩 비교하면서 다른 값(대소문자는 같은 값으로 인식함)을 만나거나 0x00을 만나거나 n바이트까지만 비교합니다. 처음부터 순서대로 비교하다가 다른 문자를 만났을 때에 s1의 값이 작으면 -값, s1이 크면 +값, 두 문자열의 길이가 같고 내용도 같거나 n바이트까지 내용이 같으면 0을 return 합니다.
※ 주의: 최신 LINUX에서는 s1 또는 s2가 NULL이면 SIGSEGV 오류가 발생합니다.
※ 주의: 대부분의 함수들이 -1, 0, 1을 return하지만, spec상으로는 0보다 작은값, 0, 0보다 큰값을 return한다고 되어 있기 때문에 if(strncasecmp(s1, s2, n) == -1) 보다는 if(strncasecmp(s1, s2, n) < 0) 형식으로 표현하는 것이 호환성 등에서 좋은 방법으로 보입니다.
파라미터
s1
- 비교할 문자열1
s2
- 비교할 문자열2
n
- 비교할 문자열의 길이
RETURN
음수
- 두 문자열을 순서대로 비교하다가 다른 문자(대소문자는 같은 값으로 인식함)를
처음 만났을 때, s1의 값이 작습니다.
0
- s1과 s2 문자열의 길이가 같고 내용(대소문자는 같은 값으로 인식함)도 같습니다.
또는 n바이트까지 내용이 같습니다.
양수
- 두 문자열을 순서대로 비교하다가 다른 문자(대소문자는 같은 값으로 인식함)를
처음 만났을 때, s1의 값이 큽니다.
활용 예제
#include <string.h>
int main(int argc, char **argv)
{
int ret;
char data1[32];
char data2[32];
......
if((ret = strncasecmp(data1, data2, 32)) == 0) {
......
} else if(ret < 0) {
......
} else {
......
}
}
반응형
'C언어 header > string.h' 카테고리의 다른 글
strndup(3) - n바이트 문자열을 새로운 메모리 할당후 복제 (0) | 2019.09.25 |
---|---|
strdup(3) - 문자열을 새로운 메모리 할당후 복제 (0) | 2019.09.25 |
strcasecmp(3) - 대소문자 구별없이 문자열의 끝까지 비교 (0) | 2019.09.25 |
strncmp(3) - 문자열을 n바이트까지 문자열 비교 (0) | 2019.09.25 |
strcmp(3) - 문자열 끝까지 비교 (0) | 2019.09.25 |