#include <stdio.h>
#include <string.h>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
const int MAX_N = 100+5;
const int MAX_WORDS = 1000;//设置最多可对1000个变位词进行处理
char line[MAX_N];//读文件的缓冲区
struct words{
char word[MAX_N];
char sign[MAX_N];
}a[MAX_WORDS];//变位词结构体,word为单词本身,sign为单词的键值
bool operator < (const words &c, const words &d){
if(strcmp(c.sign,d.sign)<0)
return true;
else
return false;
}// 运算符重载,为了使用sort函数对结构体进行排序
int main(){
FILE *fp1 = fopen("/Users/mona/changeWords/changeWords/1.txt","r");
char oldSign[MAX_N] = " ";
int cnt = 0;//记录单词个数
while(fgets(line,MAX_N,fp1)){
int pos;
pos = int(strlen(line));
if(line[pos-1]=='\n') line[pos-1] = '\0';
strcpy(a[cnt].word,line);
sort(line,line+strlen(line));
strcpy(a[cnt].sign,line);
cnt ++;
}
sort(a,a+cnt);// 将具有相同标识的单词归拢到一起
for(int i=0;i<cnt;i++){
if(strcmp(oldSign,a[i].sign)!=0){
printf("\n");
}
strcpy(oldSign,a[i].sign);
printf("%s ",a[i].word);
}
printf("\n");
return 0;
}