变位词程序c++实现

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值