按字符串排序结构数组

时间:2018-02-23 03:48:19

标签: c sorting structure

我有这个结构:

struct agente {
    int iCode;
    char cName[21];
    char cLName[21];
    char cAgentID[16];
    char cAssets[5][35];
    int iContAssets;
    int iAge;
    char cGender;
    char cMission[5][13];
    int iContMisiones;
};

typedef struct agente agente;

我尝试使用此函数按cName对该结构的数组进行排序:

void sortAgents(agente* agentesArr, int iCantAgentes) {
    int didSwap = 0;
    agente temp;

    do {
        didSwap = 0;
        for(int i = 0; i < iCantAgentes - 1; i++) {
            int comp = strcmp(agentesArr[i].cName, agentesArr[i+1].cName);
            if(comp > 0 ) {
                temp = agentesArr[i];
                agentesArr[i] = agentesArr[i+1];
                agentesArr[i+1] = temp;
                didSwap = 1;
            }
        }
    } while(didSwap == 1);
}

其中iCantAgentes是数组上的代理程序数量,agentesArr是数组。 出于某种原因,它无法正常工作。有人可以帮我找出问题吗?

1 个答案:

答案 0 :(得分:0)

您的函数只对相邻的字符串进行排序,而不是整个数组。试试这个:

void sortAgents(agente* agentesArr, int iCantAgentes) {
    agente temp;

    for(int i = 0; i < iCantAgentes - 1; i++) {
        for(int j=i+1; j < iCantAgentes - 1; j++){
            int comp = strcmp(agentesArr[i].cName, agentesArr[j].cName);
            if(comp > 0) {
                temp = agentesArr[i];
                agentesArr[i] = agentesArr[j];
                agentesArr[j] = temp;
            }
        }
    }
}