codice:
#include<stdio.h>
#include<conio.h>
#include<string.h>

#define N 100 //massimi maialini

typedef struct {
    int giorno;
    int mese;
    int anno;
} Data;

typedef struct {
    char nome[20];
    Data datanascita;
    float peso;
    int popolarità;
} Maialino;

typedef struct {
    int numero_maialini;
    Maialino pigs[N];
} Allevamento;

int confronta(Data, Data);

int main()
{
    Allevamento a = {7,
            "Porky Pig", {12, 7, 1936}, 33.50, 85,
            "Miss Piggy", {17, 12, 1974}, 23.95, 170,
            "Babe", {23, 1, 1996}, 18.80, 250,
            "Pumbaa", {14, 11, 1994}, 79.99, 1690,
            "Peppa", {31, 5, 2004}, 12.15, 8500,
            "Hamm", {12, 7, 1968}, 19.05, 290,
            "Piglet", {22, 4, 1926}, 9.30, 1260
    };

    int i = 0;
    int j = 0;

    Maialino * ord_alfabetico[N] = { NULL };
    Maialino * ord_data[N] = { NULL };
    Maialino * ord_peso[N] = { NULL };
    Maialino * ord_pop[N] = { NULL };

    //stampa allevamento così com'è
    for (i = 0; i < a.numero_maialini; i++)
    {
        printf("Il maialino %s, ", a.pigs[i].nome); //nome maialino
        printf("nato il %d/%d/%d, ", a.pigs[i].datanascita.giorno, a.pigs[i].datanascita.mese, a.pigs[i].datanascita.anno); //data nascita maialino
        printf("pesa %.2f e ha ", a.pigs[i].peso ); //peso maialino
        printf("popolarita' %d ", a.pigs[i].popolarità); //nome maialino
        printf("\n");
    }

    //stampa ordine alfabetico
    ord_alfabetico[1] = &a.pigs[1];
    printf("%s", ord_alfabetico[1]);

    for (i = 0; i < a.numero_maialini-1; i++)
    {
        if (strcmp(a.pigs[i].nome, a.pigs[i + 1].nome) < 0)
        {
            ord_alfabetico[j] = &a.pigs[i];
            j++;
        }
        else if (strcmp(a.pigs[i].nome, a.pigs[i + 1].nome) > 0)
        {
            //mi perdo
        }
    }
    //stampa ordine data

    //stampa ordine peso

    //stampa ordine popolarità


    _getch();
    return 0;
}

int confronta(Data d1, Data d2)
{
    int ris = 0;

    if (d1.anno > d2.anno)
    {
        ris = -1;
    }
    else if (d1.anno == d2.anno)
    {
        if (d1.mese > d2.mese)
        {
            ris = -1;
        }
        else if (d1.mese < d2.mese)
        {
            ris = 1;
        }
        else if (d1.mese == d2.mese)
        {
            if (d1.giorno < d2.giorno)
            {
                ris = 1;
            }
            else if (d1.giorno > d2.giorno)
            {
                ris = -1;
            }
            else if (d1.giorno == d2.giorno)
            {
                ris = 0;
            }
        }
    }
    else if (d1.anno < d2.anno)
    {
        ris = 1;
    }

    return ris;
}
Sto facendo un esercizio per il quale mi si chiede di, avendo una struttura Allevamento con N maialini in ordine casuale, creare 4 array di puntatori a ciascun maialino, e ordinare questi array di puntatori in vari ordini.

In parole povere: ho una struttura Allevamento a con 7 maialini in ordine casuale, e devo stampare a video l'allevamento a in ordine alfabetico. Per fare questo devo copiare gli indirizzi di ogni maialino nella "casella" [j] di ord_alfabetico[j]. In questo modo ho che la casella j punta al maialino corrispondente a.pigs[j].
credo di aver intuito il ragionamento ma non riesco a scriverlo, mi servirebbe un aiuto.

Grazie