Wednesday, October 04, 2006
C언어] 문자열 비교, 대소문자 구분/구분없이 비교하기 - Compare Strings Ignore Case
C언어에서는 strcmp() 함수로, 2개의 문자열이 같은지 아닌지 비교합니다.
만약 영문자를 대소문자 구분없이 비교하려면 strcmpi()를 사용합니다. 물론 한글 문자 비교에도 사용 가능합니다. 둘 다 string.h 에 정의되어 있습니다.
파일명: 0.cpp
strcmp(), strcmpi() 함수는 2개의 문자열이 동일하면 0을 리턴합니다. 0은 논리적 거짓에 해당하기에, if문 뒤에 구문이 실행되지 않습니다. 그래서 앞에 느낌표(!)를 붙여서, 그 값을 뒤집어 주면 편리합니다.
위의 소스에서 if (0)...문 참고.
warning C4127: conditional expression is constant 이런 경고(워닝)는, 변수가 아닌 상수를 조건문에 사용했다는 경고입니다. 여기서는 무시해도 좋습니다. 컴파일러를 민감하게 설정하지 않으면 이 경고가 나오지 않을 것입니다.
만약 영문자를 대소문자 구분없이 비교하려면 strcmpi()를 사용합니다. 물론 한글 문자 비교에도 사용 가능합니다. 둘 다 string.h 에 정의되어 있습니다.
문자열 비교 예제
파일명: 0.cpp
#include <stdio.h>
#include <string.h>
void main(void) {
char *s1 = "똠방각하", *s2 = "맹구";
char s3[] = "foo", s4[] = "FOO";
// "똠방각하"와 "맹구"를 비교
if (!strcmp(s1, s2)) {
puts("같군요");
} else {
puts("다르군요");
}
// 결과: 다르군요
// "foo" 와 "FOO" 를 비교
if (!strcmpi(s3, s4)) {
puts("(대소문자 구분 없을 때에는) 같군요");
} else {
puts("(대소문자 구분 없을 때에는) 다르군요");
}
// (대소문자 구분 없을 때에는) 같군요
if (0) puts("0은 논리적으로 거짓이기에, 이 문장은 결코 출력되지 않습니다.");
// warning C4127: conditional expression is constant 이런 경고가 나옵니다.
}
#include <string.h>
void main(void) {
char *s1 = "똠방각하", *s2 = "맹구";
char s3[] = "foo", s4[] = "FOO";
// "똠방각하"와 "맹구"를 비교
if (!strcmp(s1, s2)) {
puts("같군요");
} else {
puts("다르군요");
}
// 결과: 다르군요
// "foo" 와 "FOO" 를 비교
if (!strcmpi(s3, s4)) {
puts("(대소문자 구분 없을 때에는) 같군요");
} else {
puts("(대소문자 구분 없을 때에는) 다르군요");
}
// (대소문자 구분 없을 때에는) 같군요
if (0) puts("0은 논리적으로 거짓이기에, 이 문장은 결코 출력되지 않습니다.");
// warning C4127: conditional expression is constant 이런 경고가 나옵니다.
}
strcmp(), strcmpi() 함수는 2개의 문자열이 동일하면 0을 리턴합니다. 0은 논리적 거짓에 해당하기에, if문 뒤에 구문이 실행되지 않습니다. 그래서 앞에 느낌표(!)를 붙여서, 그 값을 뒤집어 주면 편리합니다.
위의 소스에서 if (0)...문 참고.
warning C4127: conditional expression is constant 이런 경고(워닝)는, 변수가 아닌 상수를 조건문에 사용했다는 경고입니다. 여기서는 무시해도 좋습니다. 컴파일러를 민감하게 설정하지 않으면 이 경고가 나오지 않을 것입니다.
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home