Aggiungo qualche altra informazione...
La stessa cosa mi è capitata con questo codice: è un sottoprogramma che ordina un array di cartelle cliniche di un ospedale. Come sempre alla stampa mi viene dato fuori un elemento che no c'entra nulla con il mio array.. insomma mi stampa simboli ecc.. La funzione di stampa funziona correttamente perchè è la stessa che uso per vireificare i dati inseriti ancor prima dell'ordinamento!

Sapreste aiutarmi?

codice:
cartella *cercaposmin(cartella *p_start, cartella *p_end){
    cartella *p;
    p=p_start;
    while(p_start<=p_end){
        if(p_start->cod<p->cod)
            p=p_start;
        p_start++;
    }
}
void ordinaelenco(cartella *p, int n){
    cartella *pin, *pfin;
    pfin=p+n; pin=p;
    cartella* posmin;
    for(int i=0; i<n-1; i++){
        posmin=cercaposmin(pin,pfin);
        if (posmin!=pin){}
            swap(pin->nome,posmin->nome);
            swap(pin->cognome,posmin->cognome);
            swap(pin->reparto,posmin->reparto);
            swap(pin->cod,posmin->cod);
        pin++;
    }
}