C代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
char *getServer(char *s)
{
while(*s!='@') s++;return s+1;
}
int cmp(const void*a,const void*b)
{
int t=strcmp(getServer(*(char**)a),getServer(*(char**)b));
return t?t:strcmp(*(char**)b,*(char**)a);
}
int main()
{
int i,n;scanf("%d",&n);
char**s=(char**)malloc(n*sizeof(char*));
for(i=0;i<n;i++)
{
char t[1000001];scanf("%s",t);
strcpy(s[i]=(char*)malloc(strlen(t)+1),t);
}
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++) printf("%s\n",s[i]);
return 0;
}
要不要看看我的代码?
https://acm.ecnu.edu.cn/blog/entry/454/
下载地址(2021-02-25 过期):
https://paste.ubuntu.com/p/KHgsdn5cb5/
然而并没有释放相关的内存,不过还好