Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define ADDRESS_ELLEMENT_SIZE 30
- #define POINTER_ARRAY_SIZE 50
- struct addressInfo
- {
- char name[ADDRESS_ELLEMENT_SIZE];
- char street[ADDRESS_ELLEMENT_SIZE];
- char cityAndState[ADDRESS_ELLEMENT_SIZE];
- int zipcode;
- };
- typedef struct addressInfo address;
- int InputData(address *dataArray[]);
- void OutputData(address *dataArray[], int structCount);
- int CompareAddressZipcode(const void *struct1, const void *struct2);
- int main()
- {
- address *pAddressArray[POINTER_ARRAY_SIZE];
- int addressCount;
- addressCount = InputData(pAddressArray);
- qsort(pAddressArray, addressCount, sizeof(address), CompareAddressZipcode);
- OutputData(pAddressArray, addressCount);
- return 0;
- }
- int InputData(address *dataArray[])
- {
- int i;
- for (i = 0; getchar() != EOF && i < POINTER_ARRAY_SIZE; i++)
- {
- dataArray[i] = (address *)malloc(sizeof(address));
- fgets(dataArray[i]->name, ADDRESS_ELLEMENT_SIZE, stdin);
- fgets(dataArray[i]->street, ADDRESS_ELLEMENT_SIZE, stdin);
- fgets(dataArray[i]->cityAndState, ADDRESS_ELLEMENT_SIZE, stdin);
- scanf("%d", &dataArray[i]->zipcode);
- }
- return --i;
- }
- void OutputData(address *dataArray[], int structCount)
- {
- for (int i = 0; i < structCount; i++)
- {
- puts(dataArray[i]->name);
- puts(dataArray[i]->street);
- puts(dataArray[i]->cityAndState);
- printf("%d", dataArray[i]->zipcode);
- free((void *)dataArray[i]);
- }
- }
- int CompareAddressZipcode(const void *struct1, const void *struct2)
- {
- const address *pStruct1 = (address *)struct1;
- const address *pStruct2 = (address *)struct2;
- return pStruct1->zipcode - pStruct2->zipcode;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement