A quanto pare è un problema abbastanza comune, ho letto spesso di persone che hanno problemi con le struct in C e, purtroppo, ci sono anche io. In realtà l'unica cosa che mi viene difficile è l'ordinamento, stavo provando con il bubblesort (anche perchè è l'unico che abbiamo fatto bene) ma mi è sembrato molto poco adatto. Quindi ho optato per strncpy, funzione che ho deciso di studiare da solo, in quanto, i miei professori, si sono dimostrati totali incompetenti. Quello che vi chiedo è di postare come dovrebbe essere fatto il codice, magari con qualche spiegazione. Io ho fatto varie e infruttuose prove. Se avete anche consigli generali per migliorare il codice sono sempre ben accetti. Grazie
codice:
//Codice che prende in input dati di un album e li restituisce ordinati per data

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 50

struct album {

       char nome_album[SIZE];
       char nome_artista[SIZE];
       int anno_album;
       };
typedef struct album CD;

void inserimento(int, CD[]);
void stampa(int, CD[]);
void ordinamento(int, CD[]);

main () {

     int num_album;
     CD album[SIZE];
     //int menu=1;

     printf("Quanti cd vuoi inserire? ");
     scanf("%d",&num_album);
     printf("\n");
     printf("Inserisci i dati dei cd\n");

     inserimento(num_album, album);
     stampa(num_album, album);
     ordinamento(num_album, album);
     system("pause");
     }


void inserimento(int num_album, CD album[]){

     int i;

     for (i=0;i<num_album;i++){

      printf("\nCD %d\n",i+1);

      printf("Nome dell'album\n");
       gets(album[i].nome_album);
       gets(album[i].nome_album);
      printf("Nome dell'artista\n");
       gets(album[i].nome_artista);
      printf("Anno di uscita dell'album\n");
       scanf("%d",&album[i].anno_album);
       printf("\n");

     }
      return;
}

void stampa(int num_album, CD album[]){ //Per ora la stampa avviene seguendo l'ordine di inserimento ma vorrei che in seguito fosse legata all'ordinamento

     int i;
     for (i=0;i<num_album;i++){

      printf("\nCD %d\n",i+1);

      printf("%s,",album[i].nome_album);
      printf("%s,",album[i].nome_artista);
      printf("%d",album[i].anno_album);
     }
     printf("\n");
      return;
}

void ordinamento(int num_album, CD album[]){


 int i=0, j=0;
 for (i=0; i<num_album-1; i++){
        for (j=i+1; j<num_album; j++){
         if (album[i].anno_album>album[j].anno_album){

             //non so come continuare, tutte le prove, non hanno funzionato

         }

        }
 }