题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723
#include <stdio.h> #include <stdlib.h> #include <string.h> #define BASE_BUFF_SIZE 10 int main(int argc, char const *argv[]) { int num; scanf("%d", &num); getchar(); char *words[num]; for (int i = 0; i < num; ++i) { int buff = 1; char ch; int count = 0; words[i] = (char*)malloc(sizeof(char) * BASE_BUFF_SIZE * buff); //printf("--%p--\n", words[i]); while((ch = getchar()) && ch != '\n') { if (count >= BASE_BUFF_SIZE * buff) { buff *= 2; words[i] = (char*)realloc(words[i], sizeof(char) * BASE_BUFF_SIZE * buff); } //printf("char : %c\tcount : %d\n", ch, count); words[i][count] = ch; count++; } } for (int i = 0; i < num; ++i) { for (int j = i + 1; j < num; ++j) { if (strcmp(words[j], words[i]) < 0) { char *tmp = words[j]; words[j] = words[i]; words[i] = tmp; } } } for (int i = 0; i < num; ++i) { printf("%s\n", words[i]); free(words[i]); } return 0; }