strcasecmp
는 C 언어의 문자열 비교 함수로, 대소문자를 구분하지 않고 두 문자열을 비교합니다. 이 함수는 두 문자열이 같으면 0을 반환하고, 첫 번째 문자열이 사전 순으로 두 번째 문자열보다 앞서면 음수를 반환하고, 첫 번째 문자열이 사전 순으로 두 번째 문자열보다 뒤에 있으면 양수를 반환합니다.
strcasecmp
함수는 <strings.h>
헤더 파일에 정의되어 있으며, 다음과 같이 사용할 수 있습니다.
c#include <strings.h>
int result = strcasecmp(const char *s1, const char *s2);
여기서 s1
과 s2
는 비교할 두 문자열입니다.
예를 들어, 두 문자열 "Hello"와 "hello"를 비교하는 경우 다음과 같이 사용할 수 있습니다.
c#include <stdio.h>
#include <strings.h>
int main()
{
const char *str1 = "Hello";
const char *str2 = "hello";
int result = strcasecmp(str1, str2);
if (result == 0)
{
printf("The strings are the same (case-insensitive).\n");
}
else
{
printf("The strings are different (case-insensitive).\n");
}
return 0;
}
이 예제에서 strcasecmp
함수는 두 문자열이 대소문자를 구분하지 않고 같으므로 0을 반환하고, "The strings are the same (case-insensitive)."라는 메시지가 출력됩니다.
strcasecmp
함수에서 반환되는 양수와 음수는 두 문자열 간의 사전 순 차이를 나타냅니다. 그러나 반환되는 값은 두 문자열 간의 차이를 정확하게 나타내지 않을 수도 있습니다. 사실, 반환 값은 첫 번째로 다른 문자 간의 차이를 기반으로 합니다.
예를 들어, 다음 코드를 살펴보겠습니다.
c#include <stdio.h>
#include <strings.h>
int main()
{
const char *str1 = "apple";
const char *str2 = "banana";
int result = strcasecmp(str1, str2);
printf("Result: %d\n", result);
return 0;
}
위 코드에서 strcasecmp
함수는 첫 번째 문자열 "apple"과 두 번째 문자열 "banana"를 비교합니다. 이 경우 첫 번째로 다른 문자는 'a'와 'b'이며, ASCII 코드 값의 차이는 -1입니다('a'의 ASCII 코드는 97, 'b'의 ASCII 코드는 98). 따라서 strcasecmp
함수는 -1을 반환합니다. 이 값은 "apple"이 "banana"보다 사전 순으로 앞서 있다는 것을 나타냅니다.
따라서 양수와 음수는 사전 순 차이를 나타내기는 하지만, 정확한 문자열 간의 차이 값이 아닌 첫 번째로 다른 문자 간의 차이를 기반으로 합니다.
strcasecmp
함수는 문자열을 비교하기 위해 설계되었기 때문에, 직접적으로 문자(char)를 비교할 수는 없습니다. 그러나 문자를 비교하기 위한 다른 방법들이 있습니다.
단일 문자의 대소문자 구분 없는 비교를 위해 tolower
또는 toupper
함수를 사용하여 두 문자를 동일한 대소문자로 변환한 다음 비교할 수 있습니다. 이 함수들은 <ctype.h>
헤더 파일에 정의되어 있습니다.
예를 들어, 두 문자 'A'와 'a'를 대소문자 구분 없이 비교하려면 다음과 같이 작성할 수 있습니다.
c#include <ctype.h>
#include <stdio.h>
int main()
{
char ch1 = 'A';
char ch2 = 'a';
if (tolower(ch1) == tolower(ch2))
{
printf("The characters are the same (case-insensitive).\n");
}
else
{
printf("The characters are different (case-insensitive).\n");
}
return 0;
}
이 예제에서 tolower
함수는 두 문자를 소문자로 변환한 다음 비교합니다. 이 경우 두 문자가 대소문자를 구분하지 않고 같으므로 "The characters are the same (case-insensitive)."라는 메시지가 출력됩니다.