간단 문제 풀이
[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로 간단히 길이 비교 가능 }
반응형