티스토리 뷰

반응형

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로 간단히 길이 비교 가능 
} 


반응형

'간단 문제 풀이' 카테고리의 다른 글

[C 터렛] 백준 1002  (0) 2018.01.21
[C 알고리즘] 그놈에 다이아몬드 찍기  (0) 2018.01.11
[C 문자] 알파벳 계단 출력  (0) 2017.12.14
[C 배열] 알파벳 제외  (0) 2017.12.14
[C 배열] 채점하기  (0) 2017.12.14
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함