mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, October 04, 2006

C언어] 문자열 비교, 대소문자 구분/구분없이 비교하기 - Compare Strings Ignore Case


C언어에서는 strcmp() 함수로, 2개의 문자열이 같은지 아닌지 비교합니다.

만약 영문자를 대소문자 구분없이 비교하려면 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 이런 경고가 나옵니다.

}


strcmp(), strcmpi() 함수는 2개의 문자열이 동일하면 0을 리턴합니다. 0은 논리적 거짓에 해당하기에, if문 뒤에 구문이 실행되지 않습니다. 그래서 앞에 느낌표(!)를 붙여서, 그 값을 뒤집어 주면 편리합니다.
위의 소스에서 if (0)...문 참고.

warning C4127: conditional expression is constant 이런 경고(워닝)는, 변수가 아닌 상수를 조건문에 사용했다는 경고입니다. 여기서는 무시해도 좋습니다. 컴파일러를 민감하게 설정하지 않으면 이 경고가 나오지 않을 것입니다.




tag: cpp
C언어 | C/C++ (Visual C++)

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top