문자열 정렬
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] 메모리 구조 (0) | 2024.02.11 |
[C] strrev() (0) | 2024.02.10 |
[C] strtolower(), strtoupper() (0) | 2024.02.10 |
[C] strcat(), strstr(), strtok() (0) | 2024.02.10 |