使用qsort组织struct(C)的vec

时间:2016-05-13 22:30:37

标签: c vector struct

我试图使用qsort来组织一个vec。但是我遇到了cmpfunc的问题。 vec是结构的vec。结构非常简单,它有一个字符串和一个数字。我想用数字来组织。

    int cmpfunc (const void *a, const void *b)
    {
        Item i = *((Item*) a);
        Item j = *((Item*) b);
        if (i->acc < j->acc)
            return 1;
        if (i->acc > j->acc)
            return -1;
    }

qsort(vec, max, sizeof(Item), cmpfunc);

我得到了这个warning: control reaches end of non-void function [-Wreturn-type] }

1 个答案:

答案 0 :(得分:0)

你只在if语句中返回,你需要在函数的底部返回它无论如何都可以得到它:

<ns3:getPostDirectionalResponse xmlns:ns2="http://xx.net/msa/Address/AddressValues.xsd" xmlns:ns3="http://www.openuri.org/">
         <return>
            <ns2:AddressValuesResponse>
               <ns2:AddressValue>
                  <ns2:value>South</ns2:value>
                  <ns2:valueAbbrev>S</ns2:valueAbbrev>
              </ns2:AddressValuesResponse>
          </return>
  </ns3:getPostDirectionalResponse>

或者这也可以:

int cmpfunc (const void *a, const void *b)
{
    Item i = *((Item*) a);
    Item j = *((Item*) b);
    if (i->acc < j->acc)
        return 1;
    if (i->acc > j->acc)
        return -1;
    return 0; 
}