太简单了我就写了个动态分配内存版本的
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 10
struct Word
{
char* strarr;
int sz;
int max;
};
void Expand(struct Word* pc)//扩容
{
if (pc->max == pc->sz)
{
pc->max += MAX;
char* ret = (char*)realloc(pc->strarr, pc->max);
if (NULL != ret)
{
pc->strarr = ret;
}
else
{
perror("realloc");
}
}
}
int my_cmp(const void* elem1, const void* elem2)
{
return strcmp((char*)elem1, (char*)elem2);
}
int main()
{
struct Word One = {0};
One.max = MAX;
One.strarr = (char*)malloc(MAX * sizeof(char));
if (NULL == One.strarr)
{
perror("malloc");
return 1;
}
while (1)
{
scanf("%c", One.strarr + One.sz);
if ('\n' == *(One.strarr + One.sz))
{
*(One.strarr + One.sz) = '\0';
break;
}
One.sz++;
Expand(&One);
}
int ret = (int)strlen(One.strarr);
qsort(One.strarr, strlen(One.strarr), sizeof(char), my_cmp);
printf("%s", One.strarr);
return 0;
}