반응형

strcasecmp(3)

#include <string.h>

int strcasecmp(const char *s1, const char *s2);

s1, s2 두 문자열의 내용을 1바이트씩 unsigned char로 대소문자 구분하지 않고 크고 작음을 비교합니다.

두 문자열이 1바이트 씩 비교하면서 다른 값(대소문자는 같은 값으로 인식함)을 만나거나 0x00을 만날때까지 비교합니다. 처음부터 순서대로 비교하다가 다른 문자를 만났을 때에 s1의 값이 작으면 -값, s1이 크면 +값, 0x00까지 모두 같으면 0을 return 합니다.

 

※ 주의: 최신 LINUX에서는 s1 또는 s2가 NULL이면 SIGSEGV 오류가 발생합니다.

※ 주의: 대부분의 함수들이 -1, 0, 1을 return하지만, spec상으로는 0보다 작은값, 0, 0보다 큰값을 return한다고 되어 있기 때문에 if(strcasecmp(s1, s2) == -1) 보다는 if(strcasecmp(s1, s2) < 0) 형식으로 표현하는 것이 호환성 등에서 좋은 방법으로 보입니다.

 

 

파라미터

s1
    - 비교할 문자열1
s2
    - 비교할 문자열2

 

RETURN

음수
    - 두 문자열을 순서대로 비교하다가 다른 문자(대소문자는 같은 값으로 인식함)를 
      처음 만났을 때, s1의 값이 작습니다.

0
    - s1과 s2는 문자열의 길이와 내용(대소문자는 같은 값으로 인식함)이 모두 같습니다.

양수
    - 두 문자열을 순서대로 비교하다가 다른 문자(대소문자는 같은 값으로 인식함)를 
      처음 만났을 때, s1의 값이 큽니다.

 


활용 예제

 

#include <string.h>

int main(int argc, char **argv)
{
    int ret;
    char data1[32];
    char data2[32];

    ......

    if((ret = strcasecmp(data1, data2)) == 0) {

        ......

    } else if(ret < 0) {

        ......

    } else {

        ......

    }

}

 

반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,