간단 문제 풀이
[C 문자] 문자열의 길이대로 정렬
nodeal
2017. 12. 22. 17:46
반응형
5개의 문자열을 받아 긴 문자열부터 출력
입력)
00000
00
000
0
0000
출력)
0
00
000
0000
00000
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *, const void *); // 비교 함수 선언
int main() {
unsigned int input_length = 5;
char **input = (char **) malloc(sizeof(char *) * input_length); // 문자열 저장 포인터
for (unsigned int i = 0; i < input_length; i++) {
*(input + i) = (char *) malloc(sizeof(char) * 10); // 9개의 문자를 받을 수 있는 문자열
gets(*(input + i)); // gets가 위험한 함수 판정은 받았지만 공백있는 문자열 입력에 가장 쉬움.
}
printf("\n");
qsort(input, input_length, sizeof(char *), compare); // stdlib.h의 Quick sort 함수. 정렬할 대상, 정렬할 길이, 정렬할 대상의 하나의 크기, 비교 함수를 인수로 받음.
for (unsigned int i = 0; i < input_length; i++) {
printf("%s\n", *(input + i));
free(*(input + i));
}
free(input);
return 0;
}
int compare(const void *compare1, const void *compare2) { // 비교 함수 정의
return strcmp(*(const char **) compare1, *(const char **) compare2); // strcmp로 간단히 길이 비교 가능
} 반응형