eccolo qua tutto il programma, dovrebbe esserci tutto quello che chiede il testo

codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100

struct dati
{
    char codice[4];
    int portata;
};
typedef struct dati codiceautocarro;

int scelta_autocarro(int peso, int cont,codiceautocarro c[MAX]);
int due_autocarri(int sped,int z,codiceautocarro d[MAX]);

int main()
{
    FILE *autocarri;
    int pesospedizione=0,i=0,flag=0;
    codiceautocarro a[MAX];

    autocarri=fopen("trasporti.txt","r");
    if(autocarri==NULL)
    {
        printf("\n\nErrore nell'apertura del file\n\n");
        exit(1);
    }

    fscanf(autocarri,"%s %d", a[i].codice, &a[i].portata);
    i++;
    while(!feof(autocarri) && i<100)
    {
        fscanf(autocarri,"%s %d", a[i].codice, &a[i].portata);
        i++;
    }

    printf("Sono stati letti %d autocarri\n",i);
    fclose(autocarri);

    while(i<=MAX && flag!=3)
    {
        printf("\nInserire il peso della prossima spedizione da effettuare >");
        scanf("%d",&pesospedizione);

        flag=scelta_autocarro(pesospedizione,i,a);
    }

return 0;
}

int scelta_autocarro(int peso, int cont,codiceautocarro c[MAX])
{
    int j=0,k=0,minimo=0,x=0,l=0;


    minimo=c[0].portata;

    for(j=0;j<cont;j++)
    {
        if(c[j].portata>=peso)
        {
            if(c[j].portata<=minimo)
            {
                l++;
                minimo=c[j].portata;
                k=j;
            }
        }
    }
    if(l!=0)
    {
        strcpy(c[k+1].codice,c[k].codice);
        c[k].portata=c[k+1].portata;
        k++;
        printf("\n\nAutocarro utilizzato per la spedizione > %s\n\n",c[k].codice);
    }
    else
       x=due_autocarri(peso,cont,c);
return x;
}

int due_autocarri(int sped,int z,codiceautocarro d[MAX])
{
    int flg=0,g=0,t=0,y=0,min=0,u=0,p=0;

    min=(d[0].portata+d[1].portata);

    for(g=0;g<z;g++)
    {
        for(t=0;t<z;t++)
        {
            if(t!=g)
            {
            if((d[g].portata+d[t].portata)>=sped)
            {
                y++;
                if((d[g].portata+d[t].portata)<=min)
                {
                     min=(d[g].portata+d[t].portata);
                     u=g;
                     p=t;
                }
            }
            }
        }
    }
    if(y==0)
    {
       flg=3;
       printf("\n\nLa spedizione non puo essere effettuata\n\n");
    }
    else
    {
        
        //Serve per eliminare il codice dell'autocarro già utilizzato....ma non funziona!
        strcpy(d[u+1].codice,d[u].codice);
        d[u].portata=d[u+1].portata;
        u++;
        strcpy(d[p+1].codice,d[p].codice);
        d[p].portata=d[p+1].portata;
        p++;
        
        
        printf("\n\nAutocarri utilizzati per la spedizione: %s %s\n\n",d[u].codice,d[p].codice);
    }

return flg;
}
Unico problema, ho messo un commento, non riesco a eliminare nella seconda funzione, gli autocarri già utilizzati....qualcuno ha qualche idea?