我有以下代码仅对一列进行排序,我想按多列排序,例如拳头姓名和姓氏。我想指出,我尝试使用 && 添加另一个 strcmp 语句,但它没有给出正确的结果。这是我的代码:
struct Car tempCar;
tempCar.CarMake = (char*)malloc( 200 *sizeof(char));
tempCar.CarMakeYear = (char*)malloc( 200 *sizeof(char));
tempCar.CarModel = (char*)malloc( 200 *sizeof(char));
tempCar.Occurances = 0;
int g, didSwap = 1, limit = newCarsCounter - 1;
//Sort by make
while (didSwap) {
didSwap = 0;
for (g = 0; g < newCarsCounter; g++) {
if ((strcmp (newCars[g].CarMake, newCars[g+1].CarMake) > 0))
{
tempCar.CarMake = newCars[g].CarMake;
tempCar.CarModel = newCars[g].CarModel;
tempCar.CarMakeYear = newCars[g].CarMakeYear;
tempCar.Occurances = newCars[g].Occurances;
newCars[g].CarMake = newCars[g+1].CarMake;
newCars[g].CarModel = newCars[g+1].CarModel;
newCars[g].CarMakeYear = newCars[g+1].CarMakeYear;
newCars[g].Occurances = newCars[g+1].Occurances;
newCars[g+1].CarMake = tempCar.CarMake;
newCars[g+1].CarModel = tempCar.CarModel;
newCars[g+1].CarMakeYear = tempCar.CarMakeYear;
newCars[g+1].Occurances = tempCar.Occurances;
didSwap = 1;
}
}
limit--;
}