Как отсортировать структуры от наименьшего к наибольшему в C?

Программа должна упорядочить структуры от наименьшего к наибольшему, основываясь на элементе zip каждой отдельной структуры.Вход основан на перенаправлении ввода / вывода. Пример файла input.txt выглядит следующим образом:
Jason Solis   
20294 Lorenzana Dr  
Woodland Hills, CA   
91364   
Robert Smith   
19831 Henshaw St   
Culver City, CA   
94023   
Bob Arum  
5142 Dumont Pl   
Azusa, CA   
91112 

код:

struct info {

    char name[BUFF_SIZE];                                
    char stAddress[BUFF_SIZE];                                      
    char cityAndState[BUFF_SIZE]; 
    char zip[BUFF_SIZE];
};

 void selectionSort(struct info *ptrStruct);




int main(void)
{

    int count;                       
    char buffer[600];
    struct info *ptrStruct[512];

    for (count = 0; count < 18; count++)
    {
        ptrStruct[count] = (struct info*) malloc(sizeof(struct info));  
        gets(buffer);
        strcpy(ptrStruct[count]->name, buffer);         
        gets(buffer);   
        strcpy(ptrStruct[count]->stAddress, buffer);    
        gets(buffer);
        strcpy(ptrStruct[count]->cityAndState, buffer); 
        gets(buffer);
        strcpy(ptrStruct[count]->zip, buffer);          
    }

    selectionSort(ptrStruct);

    printf("\n\nLEAST TO GREATEST\n");
    for (count = 0; count < 18; count++)
    {
        printf("%s\n", ptrStruct[count]->name);
        printf("%s\n", ptrStruct[count]->stAddress);
        printf("%s\n", ptrStruct[count]->cityAndState);
        printf("%s\n", ptrStruct[count]->zip);
    }
}

void selectionSort(struct info *ptrStruct[])
{

    int count2;
    int count1;
    int minIndex;
    struct info *ptrTemporary;      

    for (count2 = 0; count2 < 18 - 1; count2++)
    {
        minIndex = count2;
        for (count1 = count2 + 1; count1 < 18; count1++)
        {
            if (strcmp(ptrStruct[count1]->zip, ptrStruct[minIndex]->zip) < 0)
                minIndex = count1;
        }
        ptrTemporary = ptrStruct[count2];
        ptrStruct[count2] = ptrStruct[minIndex];
        ptrStruct[minIndex] = ptrTemporary;
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос