题解 | #字符串排序#
字符串排序
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;
}
