Salve, sto svolgendo questa traccia:

Progettare ed implementare un programma in grado di
1. acquisire da tastiera il vettore playlist; ogni elemento di playlist e’ un record (struttura), di nome
song, composto da tre campi:
titolo 20 caratteri; autore 20 caratteri; genere 10 caratteri.
Utilizzando un menu’ di input consentire:
2. La ricerca di una canzone per titolo (se trovata visualizzarne anche autore e genere).
3. La visualizzazione del numero di canzoni appartenente ad ogni genere.
4. Salvare il vettore playlist nel file compilation;
5. Uscita

Ma ho problemi nell'implementare la ricerca, infatti una volta chiamata la funzione ricerca(), chiamata la funzione strcmp() si blocca il programma... Ecco il codice:

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

struct song{
char titolo[20];
char autore[20];
char genere[10];
};
typedef struct song Brano;

//prototipi
void lettura(Brano *vettore, int elem);
void stampa(Brano *vettore, int elem);
void ricerca(Brano *vettore, int elem, char canzone);


int main () 
{
    int elem;
    char canzone[20]; 
    int i;
    
    printf("Inserisci il numero di canzoni da includere nella Playlist: ");
    scanf("%d",&elem);
    Brano vettore[elem];
    fflush(stdin);

    lettura(vettore,elem);
    stampa(vettore,elem);
    
    //STAMPA IL MENU
        printf("\n1. Ricerca brano per titolo;\n");
        printf("2. Visualizzazione numero canzoni per genere;\n");
        printf("3. Salva la playlist nel file compilation;\n");
        printf("4. Esci.\n");
        
        
    int scelta;    
    scanf("%d",&scelta);
    
    switch(scelta){
       case 1:              
            printf("Inserisci il nome del brano da cercare:\n"); 
            fflush(stdin);
            gets(canzone);            
            ricerca(vettore,elem,canzone);

            
            break;
       case 2:
            
            break;
       case 3:
            
            break;
       case 4:
            
            break;
       default: 
            printf("\nScelta non consentita!\n"); 
    }       
    
system("pause");
return 0;
}



void lettura(Brano *vettore, int elem){
    int i;   
    for(i=0;i<elem;i++){
        printf("\nBrano numero %d\n",i+1);
        printf("Titolo: ");
        gets(vettore[i].titolo);
        printf("Autore: ");
        gets(vettore[i].autore);
        printf("Genere: ");
        gets(vettore[i].genere);        
    }     

}
void stampa(Brano *vettore, int elem){
    int i;
    printf("\nHai inserito questi brani\n");
    for(i=0;i<elem;i++){      
        printf("Titolo: %s\n",vettore[i].titolo);
        printf("Autore: %s\n",vettore[i].autore);
        printf("Genere: %s\n",vettore[i].genere);    
    }          
}

void ricerca(Brano *vettore, int elem, char canzone){
    int i;
    int trovato=1;

    for(i=0;i<elem && trovato!=0;i++){ 
        printf("%d ",i);
        trovato=strcmp(vettore[i].titolo,canzone);
                            
    }
        if(trovato==0){
            printf("Brano trovato!\n");
            printf("Titolo: %s\n",vettore[i].titolo);
            printf("Autore: %s\n",vettore[i].autore);
            printf("Genere: %s\n",vettore[i].genere);  
        }
        else
            printf("Brano non trovato!\n");                            
            
}
Inoltre il dev c++ mi restituisce questi warnings:
codice:
C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c In function `main': 
46 C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c [Warning] passing arg 3 of `ricerca' makes integer from pointer without a cast 
 C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c In function `ricerca': 
98 C:\Documents and Settings\Deleted\Desktop\Lettore Musicale.c [Warning] passing arg 2 of `strcmp' makes pointer from integer without a cast
Come posso risolvere i problemi e i warnings?

Grazie