본문 바로가기
C/[코드조선] C 핵심

[C] 문자열 정렬

by 묻공러 2024. 2. 10.

문자열 정렬
2차원 문자 배열을 사전순 기준으로 오름차순과 내림차순 정렬을 구현하는 예시이다
stdlib.h의 qsort() 함수를 활용해서 풀 수 있으며, qsort()는 콜백 함수 관련이 있다

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

enum { WORDS_LENGTH = 6 };

int compare_words(const void* lhs, const void* rhs);
int compare_words_desc(const void* lhs, const void* rhs);

int main(void)
{
    size_t i;
    const char* words[WORDS_LENGTH] = {
        "premium", "level", "cultured",
        "moaning", "skinny", "curve"
    };

    puts("\n== sort ascending ==");
    qsort(words, WORDS_LENGTH, sizeof(const char*), compare_words);
    for (i = 0; i < WORDS_LENGTH; ++i) {
        printf("%s\n", words[i]);
    }

    puts("\n== sort descending ==");
    qsort(words, WORDS_LENGTH, sizeof(const char*), compare_words_desc);
    for (i = 0; i < WORDS_LENGTH; ++i) {
        printf("%s\n", words[i]);
    }

    return 0;
}

int compare_words(const void* lhs, const void* rhs)
{
    const char** w0 = (const char**)lhs;
    const char** w1 = (const char**)rhs;

    return strcmp(*w0, *w1);
}

int compare_words_desc(const void* lhs, const void* rhs)
{
    const char** w0 = (const char**)lhs;
    const char** w1 = (const char**)rhs;

    return strcmp(*w1, *w0);
}

 

'C > [코드조선] C 핵심' 카테고리의 다른 글

[C] 동적 할당  (0) 2024.02.11
[C] 메모리 구조  (1) 2024.02.11
[C] strrev()  (0) 2024.02.10
[C] strtolower(), strtoupper()  (0) 2024.02.10
[C] strcat(), strstr(), strtok()  (0) 2024.02.10