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

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

 
Sunday, December 31, 2006

C언어] 대소문자 구분 없이 문자열 배열 정렬/소트/소팅; Sort Ignore Case, String Array


영문이거나 영문이 섞인 문자열 배열을 qsort() 함수를 사용하여 ABC순으로 소트(Sort)할 때, 기본적으로 대소문자를 구분하여 소팅하기에 결과가 부자연스럽게 나옵니다. 대소문자 구분 없이 영문 문자열을 정렬하는 방법입니다.

영문 알파벳 대소문자 구분 없이, 문자 배열 소팅 예제


소스 파일명: 0.cpp
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
#include <stdio.h>
#include <stdlib.h> // qsort()
#include <string.h> // strcmp() stricmp()

int comparisonFunctionString(const void *a, const void *b);
int comparisonFunctionStringIgnoreCase(const void *a, const void *b);
int comparisonFunctionStringReverseIgnoreCase(const void *a, const void *b);


int main(void) {
  const int ELEMENTS = 5; // 요소 개수

  char array[ELEMENTS][3 + 1]
    = { "bbb", "AAA", "DDD", "CCC", "aaa" };




  // 대소문자 구분하여 정렬
  qsort((void *)array, ELEMENTS, sizeof(array[0]), comparisonFunctionString);

  for (int i = 0; i < ELEMENTS; i++)
    printf("%s\n", array[i]);

/*

AAA
CCC
DDD
aaa
bbb

*/



  puts(""); // 줄바꿈



  // 대소문자 구분 없이 정렬
  qsort((void *)array, ELEMENTS, sizeof(array[0]), comparisonFunctionStringIgnoreCase);

  for (int i = 0; i < ELEMENTS; i++)
    printf("%s\n", array[i]);

/*

aaa
AAA
bbb
CCC
DDD

*/



  puts(""); // 줄바꿈


  // 대소문자 구분 없이 내림차순 정렬
  qsort((void *)array, ELEMENTS, sizeof(array[0]), comparisonFunctionStringReverseIgnoreCase);

  for (int i = 0; i < ELEMENTS; i++)
    printf("%s\n", array[i]);

/*

DDD
CCC
bbb
AAA
aaa

*/

  return 0;
}




int comparisonFunctionString(const void *a, const void *b) {
  return( strcmp( (char *)a, (char *)b) );
}

int comparisonFunctionStringIgnoreCase(const void *a, const void *b) {
  return( stricmp( (char *)a, (char *)b) );
}

int comparisonFunctionStringReverseIgnoreCase(const void *a, const void *b) {
  return( stricmp( (char *)b, (char *)a) );
}



▶▶ C언어] 문자열 배열 정렬(소트;Sort)역순 소팅, qsort 함수 사용법




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